レポートを取得するためにリクエストをサーバーに送信するためにnode-requestを使用しています。サーバーはレポートを生成するのに時間がかかるため、レポートの状態で応答します。setInterval()
関数でレポートの状態を確認しておりclearInterval()
、サーバーがready
応答を送信するときに使用します。しかし、このアプローチでは、 を使用した後でもclearInterval
、以前のリクエストの応答が返され続け、応答ハンドラが何度も実行されます。これは多くの害を引き起こすわけではありませんが、それでも改善できると信じています。
これが私のコードです:
checkForReportReady = setInterval =>
@request URL, options, (err, res, body) =>
console.log err if err
body = JSON.parse body
if body['status'] is 'ready'
clearInterval checkForReportReady
@processReport body
, 1000
必要なもの:リクエストを作成し、応答を待ち、ステータスを確認します。ステータスがそうでない場合は、ready
タイムアウト後に別のリクエストを作成し、応答のステータスコードがready
. ステータスが準備完了の場合 - ループを終了 (または間隔をクリア) して実行します@processReport
。
約束のリクエストをして、 に入れようとしましsetInterval
たが、結果は同じでした。
PS 私はサーバーを制御していないので、サーバーがレポートに応答したり処理したりする方法を変更することはできません。