javascript - Node 在继续之前等待异步功能

标签 javascript node.js asynchronous promise async-await

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

在继续应用程序流程的其余部分之前,我该如何等待异步函数完成?

下面是一个简单的例子。

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。

谢谢

最佳答案

 使用回调机制:

function operation(callback) {

    var a = 0;
    var b = 1;
    a = a + b;
    a = 5;

    // may be a heavy db call or http request?
    // do not return any data, use callback mechanism
    callback(a)
}

operation(function(a /* a is passed using callback */) {
    console.log(a); // a is 5
})

 使用异步等待

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

关于javascript - Node 在继续之前等待异步功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47158979/

相关文章:

javascript - Chart.js,更改特定刻度的颜色

javascript - 如何理解这段 Promise 代码?

javascript - 如何在 quill.js 的工具栏中创建自定义下拉菜单

javascript - 文本字段值未传递到另一个页面

python - 无法通过 pip 或 npm 安装软件包

javascript - 尝试使用 koa bodyparser 和 ctx.body undefined

ios - Alamofire 在范围之外返回值 - 该代码如何工作?

asynchronous - Flutter - 如何从 Firestore 返回当前用户

c# - ReturnsAsync 的最小起订量回调

javascript - Javascript 中的半边数据结构?