Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了等待Node.js中的多个回调大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Node.js应用程序,可能会调用多个函数,具体取决于几个因素,但在最后一次回调后只调用一个最后一个函数.

这是我得到的简化版本:

if(foo === bar){
    function1(arg1,function(val1){
        dowhatever(val1,function(){
            res.end("Finished");
        });
    });
}else if(foo === baz){
    function2(arg2,function(val2){ 
        dowhatever(val2,function(){
            res.end("Finished");
        });
    });
}else{
    function3(arg3,function(val3){
        dowhatever(val3,function(){
            res.end("Finished");
        });
    });
}

这就是我正在做的事情:

var finished = false;

if(foo === bar){
    function1(arg1,function(val1){
        result = val1;
        finished = true;
    });
}else if(foo === baz){
    function2(arg2,function(val2){ 
        result = val2;
        finished = true;
    });
}else{
    function3(arg3,function(val3){
        result = val3;
        finished = true;
    });
}

var id = seTinterval(function(){
    if(finished === truE){
        clearInterval(id);
        dowhatever(result,function(){
            res.end("Finished");
        });
    }
},100);

我想这可以通过使用promises来简化,但是我不确定应该如何实现它们.

解决方法

你也可以使用 when和promises,恕我直言,这是最容易阅读.

var promises = [];

if(X) {
    var deferred1 = when.defer();
    doSomethingAsync({ callBACk: deferred1.resolve });
    promises.push(deferred1.promisE);
} else if(y) {
    var deferred2 = when.defer();
    doSomethingAsync({ callBACk: deferred2.resolve });
    promises.push(deferred2.promisE);
} else if(z) {
    var deferred3 = when.defer();
    doSomethingAsync({ callBACk: deferred3.resolve });
    promises.push(deferred3.promisE);
}

when.all(promises).then(function () {
    console.log('Finished Promises');
});

大佬总结

以上是大佬教程为你收集整理的等待Node.js中的多个回调全部内容,希望文章能够帮你解决等待Node.js中的多个回调所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。