等待节点js

时间:2015-09-21 12:11:22

标签: javascript node.js callback

我是节点js的新手,我试图在这样的节点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
}

请帮我解决这个问题。

提前致谢

1 个答案:

答案 0 :(得分:5)

欢迎使用异步编程:)

最好的方法是使用promises库。但是短版可能看起来像:

clean_data = json.loads(json_data.read())
del clean_data[your_key]
with open(your_file_to_write, 'w') as f:
  f.write(json.dumps(clean_data))  

修改

根据请求,使用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
}
}

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