对不起这个问题,但我对Blocking vs Non-Blocking概念很新..
我有一个函数“start()”,它包含两个包含函数(something_x)的函数(something_X)。
函数“anything_X”是异步的。
var foo = ""
var bar = ""
start();
final();
//###########################
function start() {
something_1();
something_2();
}
function something_1() {
anything_A(params, function(err, data){ foo = "hello" });
}
function something_2() {
anything_B(params, function(err, data){ bar = "world" });
}
fucntion final() {
console.log(foo + " " + bar);
}
如何在执行“final()”函数之前等待两个函数“something_X”?
答案 0 :(得分:0)
你可以用两种方法来做到这一点
var foo = ""
var bar = ""
1 - 承诺;
start()
.then(() => final())
.catch(error => console.log(error));
2 - Async和Await
async function main() {
await start();
final();
}
//###########################
function start() {
return Promise.all([something_1(), something_2()]);
}
function something_1() {
anything_A(params, function (err, data) { foo = "hello" });
}
function something_2() {
anything_B(params, function (err, data) { bar = "world" });
}
function final() {
console.log(foo + " " + bar);
}