Nir*_*aju -1 javascript callback node.js
我是节点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
}
Run Code Online (Sandbox Code Playgroud)
但我得到的不确定.我也试过这样的,
var perm1 = check_tasksAssigned(data,function(resp1) {
});
var perm2 = check_projectMembers(data,function(resp1) {
});
if(perm1 && perm2) {
// do some db stuff here
}
Run Code Online (Sandbox Code Playgroud)
并尝试过这样,但结果在所有情况下都是一样的.
var perm1 = check_tasksAssigned(data);
var perm2 = check_projectMembers(data);
if(perm1 && perm2) {
// do some db stuff here
}
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题.
提前致谢
欢迎来到异步编程:)
最好的方法是使用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
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
根据请求,使用promises,这段代码看起来像:
when.all([
check_tasksAssigned(data)
.then(function(resp1) {
perm1 = resp1;
}),
check_projectMembers(data)
.then(function(resp2) {
perm2 = resp2;
})
])
.then(finish);
Run Code Online (Sandbox Code Playgroud)
但是有很多方法可以表达这一点,具体取决于确切的承诺库等.