我有兩個承諾。一個沒有解決,我不知道爲什麼。爲什麼我的承諾不能解決?
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()'。是對的嗎? –