3

WinJS.xhr()複数のアドレスを呼び出すループがあるとします。応答ハンドラで、応答が処理されているアドレスを特定する方法はありますか? ハンドラーに渡される XmlHttpRequest オブジェクトからそれを識別するかxhr()、手動で何か他のものを渡すかのどちらかですか?

ドキュメントに目を通し、デバッガーで応答を調べましたが、何も見つかりませんでした。

4

1 に答える 1

4

その情報が応答にあるとは思いませんが、そうである必要はありません。すべての 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);
}

それが役立つことを願っています!

于 2012-12-27T14:57:44.893 に答える