node.js - 同步/异步函数插值的基本示例

时间:2018-04-23 11:13:08

标签: node.js async-await blocking nonblocking

对不起这个问题,但我对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”?

1 个答案:

答案 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);
}