我已经在我的应用程序中使用了 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 function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
撇开语法错误(如果有的话)不谈,我觉得它们做的事情完全一样。我几乎已经能够用异步代替我的大部分承诺,等待。
为什么当承诺执行类似的工作时需要异步、等待?
异步,等待解决一个更大的问题吗? 或者它只是一个不同的解决方案回调地狱?
如前所述,我能够使用承诺和异步,等待解决同样的问题。是否有任何特定的异步等待解决?
附加说明:
我一直在我的 React 项目和 Node.js 模块中广泛使用异步、等待和承诺。 反应特别是早起的鸟,采用了很多 ECMAScript 6和 ECMAScript 7的特性。