我开始使用 ES7 功能async/await
,它提供了处理异步任务的最佳方法,并使您的代码更清晰易读。
但是,它不会让您访问由异步函数创建的 Promise,因此如果您在异步函数中执行一些异步请求,您应该承诺它,然后等待它然后返回结果。我的意思是:
async function doStuff() {
//stuff...
var value = await new Promise(function(resolve) {
$.get('http://some/url/...', function(result) {
// stuff...
resolve(result);
});
});
return value;
}
如果你能找到一个指向由函数创建的 Promise 的指针,那么你的代码看起来像:
async function doStuff() {
//stuff...
var p = arguments.callee.promise;
$.get('http://some/url/...', function(result) {
// stuff...
p.resolve(result);
});
}
甚至:
async function doStuff() {
//stuff...
$.get('http://some/url/...', function(result) {
// stuff...
async.resolve(result);
});
}
这样您就不需要直接访问 Promises API,这使您的代码完全专注于任务,而没有其他任何东西。