我有两个承诺。一个没有解决,我不知道为什么。为什么我的承诺不能解决?
processTradeOffer:承诺链,试图procced对象称为'报价'。 identifyOffer返回var可能是“valida” | “aceptable” | “denegable”。如果是'valida',我们需要识别offer。所以我们需要另一个异步函数,即identifyItems(offer)将返回var'offerState'“denegable”| “aceptable”,然后我们可以拒绝或接受报价。
我知道问题没有在声明中(offerState =='valida')。 代码:
const processTradeOffer = function(offer) {
return new Promise(function(resolve, reject) {
identyOffer(offer)
.then(function(offerState) {
return finishTradeOffer(offer, offerState);
}).then(function() {
console.log('aqui');
return resolve();
})
})
}
const finishTradeOffer = function(offer, offerState) {
return new Promise(function(resolve, reject) {
if (offerState == 'aceptable') {
acceptTradeOffer(offer).then(function() {
return resolve();
})
} else if (offerState == 'denegable') {
declineTradeOffer(offer).then(function() {
console.log('here');
return resolve();
})
} else if (offerState == 'valida') {
identifyItems(offer).then(function(offerState) {
finishTradeOffer(offer, offerState);
})
}
})
}
CONSOLE.LOG( '这里')被成功地发射和CONSOLE.LOG( '褐')不。
你根本不应该使用'new Promise()'。 – SLaks
如果'offeringtate =='valida''应该会发生什么?顺便说一句,'.then(function(){return resolve();})'和'then(resolve)'是一样的,但是你不应该这样做。 – 2017-09-13 19:06:49
它看起来像'identyOffer','acceptTradeOffer'等已经返回承诺,因为你正在调用'then()'。是对的吗? –