【发布时间】:2014-03-21 16:30:28
【问题描述】:
我有两个简单的方法:
function do(x,y){
if(x){
XHR1().success();
}
if(y){
XHR2().success();
}
}
function done(){
return something;
}
现在我只想确保在do() 完成后调用done()(**do() 方法包含对 Mysql DB 的异步请求)
我怎样才能做到这一点?**
显然这不会按顺序排列这些方法:
do(x=1,y=1);
done(); //this can run also if do() has not finished yet
所以我尝试了:
function do(x,y,_callback){
if(x){
XHR1().success();
}
if(y){
XHR2().success();
}
_callback();
}
function done(){
return something;
}
do(x=1,y=1,done()); // this won't work the same cause callback is not dependent by XHR response
这是我用于承诺的https://github.com/tildeio/rsvp.js/#arrays-of-promises
【问题讨论】:
-
使用回调或承诺。
-
@Matt Ball 一个承诺没问题,但如果我在 do() 中有超过 1 个异步调用,我无法解决它
-
您必须将每个回调放在前一个中。回调之外的任何内容都将立即执行。
标签: javascript node.js asynchronous promise rsvp-promise