JavaScript promise 和 async await 之间有什么区别?
我一直在我的应用程序中使用 ECMAScript 6 和 ECMAScript 7 的功能(感谢 Babel) - 包括移动和 Web。
第一步显然是 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
同样,这是我的异步,await函数的伪代码-
async function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
撇开语法错误(如果有的话)不谈,它们都做了完全相同的事情,这就是我的感觉。我几乎能够用异步,等待来取代我的大部分承诺。
为什么当承诺做类似的工作时,需要异步,await?
async,await是否解决了更大的问题?还是只是回调地狱的另一种解决方案?
正如我之前所说,我能够使用承诺和异步,等待来解决同样的问题。是否有任何特定的异步等待解决?
附加说明:
我一直在我的 React 项目和 Node.js模块中广泛使用 async、awaits 和 promise。特别是 React 已经起步了,它采用了很多 ECMAScript 6 和 ECMAScript 7 的功能。