以前に要求された計算の結果に対して特定のAPIエンドポイントをポーリングするNode.js関数を記述する必要があります。その結果は生成されるまでにランダムな時間がかかり、まったく生成されないことがあります。私たちはできるだけ早くそれを手に入れたいと思っていますが、私はあまりにも長い間待たずにいたい、ということは、ある数のAPI呼び出しの後に関数が失敗する(Promiseを拒絶する)ことを意味します。失敗する前に結果をn回(試行間の遅延で)返す
私たちのコードとAPIとの間には一方向の通信があります。
const Bluebird = require('bluebird');
function getResult() {
return new Bluebird(async function (resolve, reject) {
let counter = 0;
while (counter < 10) {
await Bluebird.delay(1000);
const res = await apiCall();
if (res.data) {
resolve(res.data);
} else {
counter += 1;
}
}
reject('timeout');
});
}
これは正しい方法ですか?
ありがとうございます!我々は 'global.Promise = require(" bluebird ");'を持っています。ネイティブの約束を置き換えるのもいいですよね? – krl
@krl「async」機能に影響を与えるべきではない本当のES6でしか見ていません。あなたのトランスペラレータが 'global.Promise'変数を使用している場合、それはまさに私が何を意味するのかです:-) – Bergi