我有一串Promise
代码如下。我希望第三个Promise
等待完成第二个,但它不会!有谁能解释这个问题?
var condition = true;
// Promise
var willIGetNewPhone = new Promise(
function (resolve, reject) {
if (condition) {
var phone = {
brand: 'Samsung',
color: 'black'
};
setTimeout(function(){
console.log("First Prommis!");
resolve(phone);
}, 2000)
} else {
var reason = new Error('Has not condition!');
reject(reason);
}
}
);
var showOff = function (phone) {
var message = 'Need New Phone ' +
phone.color + ' ' + phone.brand + ' phone';
setTimeout(function(){
console.log("Second promis!");
return Promise.resolve(message);
}, 1000)
};
willIGetNewPhone
.then(showOff)
.then(function (fulfilled) {
console.log("Third Pramis!");
})
.catch(function (error) {
console.log(error.message);
});
答案 0 :(得分:1)
您的问题是您没有从showOff
函数返回Promise。实际上你没有回来。
代码return Promise.resolve(message);
会返回您为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);
});
};
所以你看,基本上你的调试超时是你的问题。