Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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_Promise - Fatal编程技术网

Javascript 承诺链

Javascript 承诺链,javascript,promise,Javascript,Promise,我有一系列的承诺,如下面的代码。我想要第三个承诺等待第二个承诺完成,但事实并非如此!有人能解释这个问题吗 var条件=真; //允诺 var willIGetNewPhone=新承诺 函数解析、拒绝{ 如果条件{ var电话={ 品牌:“三星”, 颜色:“黑色” }; setTimeoutfunction{ console.logFirst Prommis!; 解析电话; }, 2000 }否则{ var reason=新错误“没有条件!”; 拒绝理由; } } ; var showOff=功

我有一系列的承诺,如下面的代码。我想要第三个承诺等待第二个承诺完成,但事实并非如此!有人能解释这个问题吗

var条件=真; //允诺 var willIGetNewPhone=新承诺 函数解析、拒绝{ 如果条件{ var电话={ 品牌:“三星”, 颜色:“黑色” }; setTimeoutfunction{ console.logFirst Prommis!; 解析电话; }, 2000 }否则{ var reason=新错误“没有条件!”; 拒绝理由; } } ; var showOff=功能电话{ var消息='需要新电话'+ phone.color+“”+phone.brand+“phone”; setTimeoutfunction{ console.logSecond promis!; 返回Promise.resolve消息; }, 1000 }; 威利盖特新电话 .然后炫耀 .Then函数已完成{ console.logprimis!; } .catchfunction错误{ console.logerror.message;
}; 您的问题是,您没有从showOff函数返回承诺。事实上你什么也没回来

返回Promise.resolve消息的代码;返回为setTimeout创建的匿名函数,而不是showOff函数

所以你必须回报这样的承诺:

var showOff = function (phone) {
    var message = 'Need New Phone ' +
                phone.color + ' ' + phone.brand + ' phone';
    return new Promise(function(resolve) {
        setTimeout(function() {
            resolve(message);
        }, 1000);
    });
};
你看,基本上你的调试超时是你的问题