私は2つの約束を持っています。 1つは解決されていないと私はなぜ知りません。私の約束が解決しないのはなぜですか?
processTradeOffer:'プラン'と呼ばれるオブジェクトをproccedしようと約束のチェーン。 identifyOffer varを返します。"valida" | "受け入れ可能" | "denegable"。 'valida'の場合、オファーからアイテムを特定する必要があります。したがって、別の非同期関数が必要ですidentifyItems(offer)は返されますvar 'offerState' "denegable" | "受け入れられる"とし、私たちは申し出を拒否または受け入れることができます。
私は知っている問題は、ステートメント(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( 'AQUI')はいけませんさ。
「新しいPromise()」を使用しないでください。 – SLaks
'offerstate == 'valida''ならば何が起こるはずですか?ところで、 '.then(function(){return resolve();}'は 'then(resolve)'と同じですが、とにかくやってはいけません。 –
あなたは 'then()'を呼び出しているので、 'identyOffer'、' acceptTradeOffer'などはすでに約束を返しています。そうですか? –