节点在继续之前等待异步功能

时间:2017-11-07 13:17:22

标签: javascript node.js asynchronous promise async-await

我有一个使用某些异步函数的节点应用程序。

如何在继续执行其余的应用程序流之前等待异步函数完成?

下面有一个简单的例子。

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.

由于

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()

使用async等待

.png