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