WinJS.xhr()
複数のアドレスを呼び出すループがあるとします。応答ハンドラで、応答が処理されているアドレスを特定する方法はありますか? ハンドラーに渡される XmlHttpRequest オブジェクトからそれを識別するかxhr()
、手動で何か他のものを渡すかのどちらかですか?
ドキュメントに目を通し、デバッガーで応答を調べましたが、何も見つかりませんでした。
WinJS.xhr()
複数のアドレスを呼び出すループがあるとします。応答ハンドラで、応答が処理されているアドレスを特定する方法はありますか? ハンドラーに渡される XmlHttpRequest オブジェクトからそれを識別するかxhr()
、手動で何か他のものを渡すかのどちらかですか?
ドキュメントに目を通し、デバッガーで応答を調べましたが、何も見つかりませんでした。
その情報が応答にあるとは思いませんが、そうである必要はありません。すべての xhr 呼び出しには、その特定の呼び出しに対して返される独自の Promise があります。私はこのようにするのが好きです...
//start with an array of some kind
var urls = [
"http://something.com/1",
"http://something.com/2",
"http://something.com/3",
];
//map the array to a list of calls adding your url in so you have it
var results = urls.map(function(u) {
return {url:u, response:WinJS.xhr({url:u})};
}
そして、結果配列をループして、URL を取得できます。それを別の promise でラップして、全体が非同期になるようにすることもできます。
function xhrCallsAsync() {
//start with an array of some kind
var urls = [
"http://something.com/1",
"http://something.com/2",
"http://something.com/3",
];
//map the array to a list of calls adding your url in so you have it
var results = urls.map(function(u) {
return {url:u, response:WinJS.xhr({url:u})};
}
//return a Promise that completes when all of the Promises are complete
return WinJS.Promise.join(results);
}
それが役立つことを願っています!