ES7异步/ AWAIT使我们的开发人员编写异步JS代码看起来同步。在目前的JS版本中,我们将介绍Promises,这样我们可以简化Async流程并避免回调地狱。
回调地狱是用来描述JS中的以下情况的术语:
function AsyncTask() {
asyncFuncA(function(err, resultA){
if(err) return cb(err);
asyncFuncB(function(err, resultB){
if(err) return cb(err);
asyncFuncC(function(err, resultC){
if(err) return cb(err);
// And so it goes....
});
});
});
}
这造成了难以维护的代码,并使控制流程成为一项艰巨的任务。只要考虑一个if语句,需要执行其他Async方法,如果某些来自callbackA的结果等于'foo'。
承诺救援
凭借承诺和ES6,我们可以简化我们以前的代码噩梦,如下所示:
function asyncTask(cb) {
asyncFuncA.then(AsyncFuncB)
.then(AsyncFuncC)
.then(AsyncFuncD)
.then(data => cb(null, data)
.catch(err =