はじめに:私はC++バックグラウンドから来た後、Javascriptの方が新しいです。NodeJS/ES6で失敗した試行を再試行
パブリックnpmライブラリを使用していくつかのデータセットをリクエストするNodeJSアプリケーションを作成しています。データソースレートは要求を制限し、極端な場合にはこれらのレート制限が適用されます。これらの制限に達すると、APIは数多くのリクエストを処理する前に「レート制限超過」を数秒間だけ戻します。
私はデータを受け取ったときに、.map()
を使って解析しようとします。しかし、レート制限を超えると、map()
は配列に対してのみ利用可能で、「レート制限超過」というメッセージは単なるオブジェクトなので、アプリケーション全体がクラッシュする。
if (message.message === 'Rate limit exceeded') { //This check doesn't work btw
console.log('There was a problem parsing data from the server: ' + err);
return;
}
var items = data.map(item => ({
time: new Date(item[0] * 1000),
low: item[1],
high: item[2],
open: item[3],
close: item[4],
volume: Number(item[5])
}));
for(var i = 0; i < items.length; i++)
dataStore.push(items[i]);
「レート制限超過」メッセージを検出して数秒待ってから再試行することで、このアプローチにしたいと考えています。
私の現在の理解から、setTimeout()
はこれの良い候補になりますが、再帰的に動作させる方法を理解できません。基本的には、データが正しく処理されるまで5秒ごとにデータを再要求したいと思います。
TL; DR:関数がデータを正しく受け取るまで、setTimeout()
で関数を再帰的に呼び出そうとします。これを達成するより良い方法があれば、私はすべての耳です。