私は外部URLを呼び出してレスポンスを配列に保存する必要があるnode.js expressアプリケーションを持っています。そこで、URLを格納する配列とレスポンスを格納する配列の2つの配列を作成しました。私は、応答(非同期)を待たずに一回でURLを呼び出すために各ループのために使用Javascript:複数のコールバック関数で単一の変数を使用する際に必要な提案
var urls = ['http://example.com','http://example.org','http://example.net'];
var allResponses = [];
handleResponse
が正常な応答に
handleResponse function(response){
allResponses.push(response);
}
Asを取得した後に呼び出されるコールバック関数です
urls.forEach(url, index, urls) {
callUrl(url, handleResponse);
}
一度にすべてのコールバックが呼び出される可能性があり、一度に複数のアクセスallResponses
につながる可能性があります。 URLを打った後にフェッチされたすべてのレスポンスに対して、node.jsがallResponses
を入力してこの条件を処理しますか?
別のアプローチは、私はより良いアプローチである1お知らせください再帰的
function loadResponse(index) {
// serialize recursively
callUrl(urls[index++], function (response) {
allResponses.push(response);
if (index < urls.length) {
loadResponse(index); // recursive call
}
});
}
を呼び出して電話を同期させることですか?
応答の順序は関係ありませんが、配列にはすべての応答が必要です。競合状態は、古い応答またはデッドロックを上書きしてはなりません。 –
それはありません。 Jsはシングルスレッドです。プッシュ* appends *ので、オーバーライドすることは不可能 –