Я уже использую функции ECMAScript 6 и ECMAScript 7 (благодаря Babel) в своих приложениях - как мобильных, так и веб-.
Первым шагом, очевидно, был уровень ECMAScript 6. Я выучил много асинхронных шаблонов, обещаний (которые действительно многообещающие), генераторов (не знаю, почему символ *) и т.д. Из этих обещаний вполне подходили моей цели. И я довольно часто их использую в своих приложениях.
Вот пример/псевдокод того, как я реализовал базовый promise-
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
. Они, кажется, добавляют большую ценность стилю программирования.
Опять же, вот псевдокод того, как выглядит моя асинхронная функция ожидания like-
async function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
Если оставить в стороне ошибки синтаксиса (если они есть), то они оба делают одно и то же - это то, что я чувствую. Я почти смог заменить большинство своих обещаний асинхронными, ждет.
Почему требуется асинхронное ожидание, когда обещания выполняют аналогичную работу?
Асинк, ждут, решить большую проблему? Или это было просто другое решение для обратного вызова ада?
Как я уже говорил ранее, я могу использовать обещания и асинхронные, ожидаю решения той же проблемы. Есть ли что-то конкретное, что async await решено?
Дополнительные примечания:
Я широко использую async, ждет и обещает в своих проектах React и модулях Node.js. Реакция особенно была ранней пташкой и переняла много функций ECMAScript 6 и ECMAScript 7.