Я вже використовую функції ECMAScript 6 та ECMAScript 7 (завдяки Babel) у своїх додатках - як для мобільних, так і для Інтернету.
Очевидно, першим кроком було досягнення рівня ECMAScript 6. Я дізнався багато асинхронних зразків, обіцянки (які насправді є багатообіцяючими), генератори (не впевнений, чому символ *) тощо. Із них обіцянки досить добре підходили моїй меті. І я досить часто використовую їх у своїх додатках.
Ось приклад / псевдокод того, як я реалізував базову обіцянку -
var myPromise = new Promise(
function (resolve,reject) {
var x = MyDataStore(myObj);
resolve(x);
});
myPromise.then(
function (x) {
init(x);
});
Йшов час, я натрапив на ECMAScript 7 ознак, і один з них ASYNC
і AWAIT
ключових слів / функції. Вони разом роблять великі чудеса. Я почав замінювати деякі свої обіцянки на async & await
. Здається, вони додають великої цінності стилю програмування.
Знову ж, ось псевдокод того, як виглядає моя функція async, await -
async function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
Не враховуючи синтаксичні помилки (якщо такі є), обидва вони роблять абсолютно те саме, що я відчуваю. Я майже зміг замінити більшість своїх обіцянок асинхронними, чекає.
Чому асинхронізація потрібна, коли обіцянки виконують подібну роботу?
Асинхронізація очікує вирішення більшої проблеми? Або це було просто інше рішення для зворотного виклику пекла?
Як я вже говорив раніше, я можу використовувати обіцянки та асинхронізацію, чекаючи вирішення тієї ж проблеми. Чи є щось конкретне, що асинхронізація чекає вирішення?
Додаткові нотатки:
Я широко використовував async, очікування та обіцянки у своїх проектах React та модулях Node.js. Особливо React був ранньою птицею і прийняв багато функцій ECMAScript 6 та ECMAScript 7.