Я уже использую функции 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, awaits.
Почему требуется async, await, когда обещания выполняют аналогичную работу?
Решает ли async, await более серьезную проблему? Или это было просто другое решение проблемы обратного вызова?
Как я сказал ранее, я могу использовать обещания и async, ждать решения той же проблемы. Есть ли что-то конкретное, что async await решено?
Дополнительные примечания:
Я широко использую async, awaits и promises в своих проектах React и модулях Node.js. React особенно был ранней пташкой и принял множество функций ECMAScript 6 и ECMAScript 7.