私は、最初のチェーンの応答を後でチェーン(4 & 6)の場所で使用する必要があると約束したチェーンを持っていますが、これを処理するためにいくつかのグローバル変数を使用します。正しい方法ではなく、これを約束で達成するためのより良い方法がありますか?promiseの応答を後でチェーンで返す
これは、問題のいくつかの実例である...
var step1 = (ms) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
log("This is step 1");
resolve(20);
}, ms);
})
}
var step2 = (ms) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
log("This is step 2");
resolve();
}, ms);
})
};
var step3 = (ms) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
log("This is step 3");
resolve();
}, ms);
})
};
var step4 = (ms) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
log("Step 4, run : " + ms);
resolve();
}, ms);
})
};
var globalVar = null;
//Promise chain
step1(500)
.then((res) => {
//Here I keep the response in global variable to use later on
globalVar = res;
log(res);
return step2(300);
}).then(() => {
return step3(200);
}).then(() =>{
//Here I need to use the res from the first promise
var lclvar = globalVar +200 ;
return step4(lclvar);
}).catch((err) => {
log(err);
});
私はこれを見つけましたが、これは、この場合には役立っていない(少なくとも、それを処理することができませんでした)
How do I access previous promise results in a .then() chain?
質問は正確にあなたがあなたのケースのために必要なものです。あなたが答えについて理解できなかったこと、またはあなたが選択した答えの中からどのソリューションを選択して適用しようとしたのかを教えてください。試したことを示すために質問を編集してください(それはうまくいかなかった)!それ以外の場合は、複製としてクローズする必要があります。 – Bergi
@Bergi - ありがとう、私は成功せずにそれを分割しようと...あなたはフィールのようにそれを使用する意味ですか? –
それでも、何がうまくいかなかったのか理解できるように、その試みのコードを投稿してください。あなたがすでに分裂している(鎖を壊す)ことが*働くと考えられていることをすでに理解していれば、それを並べ替えることができます。 – Bergi