Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回访金字塔,即使有承诺_Javascript_Node.js_Callback_Promise_When Js - Fatal编程技术网

Javascript 回访金字塔,即使有承诺

Javascript 回访金字塔,即使有承诺,javascript,node.js,callback,promise,when-js,Javascript,Node.js,Callback,Promise,When Js,我有3个函数,我想一个接一个地执行,只有当前一个函数完成它的任务时。我用的是When Promise library function taskA(){ var d = when.defer(); d.resolve(); return d.promise; } function taskB(){ var d = when.defer(); d.resolve(); return d.promise; } function taskC(){

我有3个函数,我想一个接一个地执行,只有当前一个函数完成它的任务时。我用的是When Promise library

function taskA(){
    var d = when.defer();
    d.resolve();
    return d.promise;
}
function taskB(){
    var d = when.defer();
    d.resolve();
    return d.promise;
}
function taskC(){
    var d = when.defer();
    d.resolve();
    return d.promise;
}

taskA().then(function(){
    taskB().then(function(){
        taskC().then(function(){
}); }); });
应该是这样的吗?我当时的印象是,我可以很容易地避免回调和使用承诺的“末日金字塔”,还是我用错了

taskA()
   .then(taskB)
   .then(taskC)
   .then(function(){});

这是因为承诺是敞开的。当您从
处理程序返回承诺时,
处理程序将等待该承诺得到解决,然后再执行下一个承诺。