我有一个使用一些异步功能的节点应用程序。
在继续进行其余的应用程序流程之前,我该如何等待异步功能完成?
下面有一个简单的示例。
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。
a
谢谢
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()