Javascript 等待节点js中函数或回调的返回值

Javascript 等待节点js中函数或回调的返回值,javascript,node.js,callback,Javascript,Node.js,Callback,我是node js的新手,我尝试在node js中设置一些变量,如下所示 var perm1 = 0; var perm2 = 0; check_tasksAssigned(data,function(resp1) { perm1 = resp1; }); check_projectMembers(data,function(resp2) { perm2 = resp2; }); if(perm1 && perm2) { // do some db st

我是node js的新手,我尝试在node js中设置一些变量,如下所示

var perm1 = 0;
var perm2 = 0;
check_tasksAssigned(data,function(resp1) {
    perm1 = resp1;
});
check_projectMembers(data,function(resp2) {
    perm2 = resp2;
});

if(perm1 && perm2) {
    // do some db stuff here
}
但我变得不确定了。我也这样试过,

var perm1 = check_tasksAssigned(data,function(resp1) {

});
var perm2 = check_projectMembers(data,function(resp1) {

});

if(perm1 && perm2) {
    // do some db stuff here
}
我试过这样做,但结果在所有情况下都是一样的

var perm1 = check_tasksAssigned(data);
var perm2 = check_projectMembers(data);

if(perm1 && perm2) {
    // do some db stuff here
}
请帮我解决这个问题


提前感谢

欢迎使用异步编程:)

最好的方法是使用promises库。但简短的版本可能如下所示:

var perm1 = 0;
var perm2 = 0;
check_tasksAssigned(data,function(resp1) {
    perm1 = resp1;
    finish();
});
check_projectMembers(data,function(resp2) {
    perm2 = resp2;
    finish();
});

function finish() {
if(perm1 && perm2) {
    // do some db stuff here
}
}
编辑

根据请求和承诺,此代码将类似于:

when.all([
  check_tasksAssigned(data)
    .then(function(resp1) {
      perm1 = resp1;
    }),
  check_projectMembers(data)
    .then(function(resp2) {
       perm2 = resp2;
    })
  ])
  .then(finish);

但是有很多方法可以表达这一点,具体取决于承诺库等等。

它可能是重复的,但我不会说它是重复的。你可以从那里得到答案,但是等待两个结果与只等待一个结果是不同的。我想。谢谢你的重播,我会检查链接。它工作了。谢谢:)很想知道如何使用
Promise
实现这一点!