我有一个使用某些异步函数的节点应用程序。
如何在继续执行其余的应用程序流之前等待异步函数完成?
下面有一个简单的例子。
var a = 0;
var b = 1;
a = a + b;
// this async function requires at least 30 sec
myAsyncFunction({}, function(data, err) {
a = 5;
});
// TODO wait for async function
console.log(a); // it must be 5 and not 1
return a;
在示例中,元素" a
"返回必须是5而不是1.如果应用程序没有等待异步函数,则它等于1.
由于
答案 0 :(得分:19)
async function operation() {
return new Promise(function(resolve, reject) {
var a = 0;
var b = 1;
a = a + b;
a = 5;
// may be a heavy db call or http request?
resolve(a) // successfully fill promise
})
}
async function app() {
var a = await operation() // a is 5
}
app()
.png