を渡すまでそれをやり続ける、あなたは.then()
ハンドラ内で、現在の約束へのアクセスを得ることはありません。とにかく、とにかく役に立つものはほとんどできませんでした。別の.then()
ハンドラを追加しても、あなたがすでに入っている.then()
ハンドラとは何も変わりません。実行されると、約束は決して状態を変更しません。
何かを繰り返す場合は、繰り返したいものから機能を作り、.then()
ハンドラの中からもう一度呼び出すと、結果として得られた約束事が返されます(前の約束事に引き継がれます)。ここで
は例です:
// utility delay function that returns a promise
function delay(t, val) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(val);
}, t);
});
}
// repeatedly call someAsyncOp() until we see the operation is finished
function repeatUntil(t) {
return someAsyncOp().then(function(state) {
if (state !== "finish") {
return delay(t).then(repeatUntil);
}
});
}
// sample usage
repeatUntil(5000).then(function() {
// state is finished here
}).catch(function(err) {
// error here
});
'VARを参照してくださいまで
doSomethingAsync()
コールの.then()
で同じ関数を呼び出す再帰的に、.then()
で使用する関数に名前を付けることができます再試行= fn => _ => fn()。catch(再試行(fn)); ' - チェックが失敗した場合はfn throwを使います... usage:' r –あなたがもう一度 'somePromise.then(()=> {'最初の '.then'の内部のある条件を再実行したいのですか?満足ですか? – James111