2017-01-19 8 views
-1

私はリクエストを使ってhttp getリクエストを作成し、いくつかのページのhtmlを取得します。呼び出されたすべての非同期要求が完了したことをどのように知ることができますか?

私が使用しているコードはこの構造を持っています。

function updateAll() 
{ 
    request(mainurl, function(error, response, html){ 
     //get urls from html 
     Array.from(urls).forEach(function(url) { 
      update1(url); 
     }); 
    }); 
} 

function update1(url) 
{ 
    request(url, function(error, response, html){ 
     //get urls from html 
     Array.from(urls).forEach(function(url) { 
      update2(url); 
     }); 
    }); 
} 

function update2(url) 
{ 
    request(url, function(error, response, html){ 
     //get urls from html 
     Array.from(urls).forEach(function(url) { 
      results.push(url); 
     }); 
    }); 
} 

更新が完了したらどうすればわかりますか? ありがとうございます。

+1

「約束」の使用を検討する必要があります – baao

+0

コールバック、約束、オブザーバブル(イベントエミッタ) – INgeek

答えて

0

最高の解決策はPromises APIを使用することです。しかし、生の決定が必要な場合は、すべての関数にコールバックパラメータを追加し、最後のコールが呼び出されるまで待ちます。

関連する問題