JavaScript promise和async await有什么区别?

我已经在移动应用程序和Web应用程序中使用过ECMAScript

6和ECMAScript 7功能(由于Babel)。

第一步显然是达到ECMAScript

6级别。我学习了许多异步模式,promise(确实是很有希望的),生成器(不确定为什么使用*符号)等。其中,promise非常适合我的目的。而且我已经在我的应用程序中使用它们很多次了。

这是我如何实现基本诺言的示例/伪代码-

var myPromise = new Promise(

function (resolve,reject) {

var x = MyDataStore(myObj);

resolve(x);

});

myPromise.then(

function (x) {

init(x);

});

随着时间的流逝,我遇到了ECMAScript

7功能,其中之一是ASYNCAWAIT关键字/功能。这些结合在一起创造了很大的奇迹。我已经开始用代替我的一些诺言async &

await。它们似乎为编程风格增加了巨大的价值。

同样,这是我的async,await函数的伪代码,如下所示:

async function myAsyncFunction (myObj) {

var x = new MyDataStore(myObj);

return await x.init();

}

var returnVal = await myAsyncFunction(obj);

撇开语法错误(如果有的话),他们俩做的事情完全一样,这就是我的感受。我几乎可以用异步替换掉我的大部分诺言。

为什么诺言做类似的工作时需要异步等待?

异步等待解决更大的问题吗?还是只是针对回调地狱的另一种解决方案?

如前所述,我能够使用promise和async,等待解决相同的问题。异步等待解决了什么具体问题?

补充笔记:

我已经在我的React项目和Node.js模块中广泛使用异步,唤醒和承诺。React特别是早起的鸟儿,并采用了许多ECMAScript

6和ECMAScript 7功能。

回答:

为什么Promises做类似的工作时需要异步等待?异步等待解决更大的问题吗?

async/await只是给您一种异步代码的同步感觉。这是语法糖的一种非常优雅的形式。

对于简单的查询和数据操作,Promises可能很简单,但是如果您遇到了复杂的数据操作和不涉及任何内容的场景,那么如果代码 看起来

好像是同步的,则更容易理解正在发生的情况(换句话说,语法本身就是一种“偶然的复杂性”,async/await可以绕开。

如果您想知道,可以使用类似co(与生成器一起)的库来提供相同的感觉。已经开发了类似的方法来解决async/await最终解决的问题(本机)。

以上是 JavaScript promise和async await有什么区别? 的全部内容, 来源链接: utcz.com/qa/420452.html

回到顶部