1
순차적으로 다운로드하려는 URL 배열이 2 개 있습니다.배열에서 일련의 WinJS 약속을 순차적으로 실행합니다.
var urls = [url1,url2,url3,url4,url5];
루프 일부 비동기 함수 배열에 나타나는 순서대로 한번에 2 개 URL을 사용하여 모든 URL을 다운로드한다. 기본 순차적 루프를 다음과 같이 작동 .reduce
를 사용하여 수행됩니다 :
preloadPromise = urls.reduce(function(p, url) {
return p.then(WinJS.Utilities.Scheduler.schedulePromiseBelowNormal).then(function() {
return preloadOneAsync(url);
}).then(null, function(error) {
if (error.name !== "Canceled") {
logger.error("Could not create preloaded " + url, error);
}
});
}, WinJS.Promise.as());
이 지금은 같은 시간에 두 URL을 병렬 다운로드를 소개하고자합니다.
그래서 그것을 다운로드 것 : [URL1을 URL2] 다음 [URL3은 url4] 마지막으로 [url5]는 또한 함수의 결과가 어떻게 WinJS.Promise.join
작품과 유사한 모든 다운로드 약속의 결과이어야한다.
감사합니다, 당신은 '약속의 사람'인 것 같습니다 :) 한 가지 : WinJS.Promise.Jin은 약속 중 하나라도 실패하면 실패합니다. 따라서 몇 초 후에 다시 시도 할 URL을 모르겠습니다. . – philk
[그놈들] (http://stackoverflow.com/tags/promise/topusers) 중 하나만 :-) 예, 배열의 약속 중 하나라도 실패하면 'join'이 실패하지만 여기에는 관련이 없습니다 -'tryToLoad '* 결코 * 모든 오류를 포착하기 때문에 실패하지 않습니다. 오류 처리기는 어떤 URL이 실패했는지 나타내는 개체를 반환 할 수 있습니다. – Bergi
그러나 오류 처리기는 'WinJS.Promise.wrapError (error)'와 같은 실패한 약속을 반환해서는 안됩니다. – philk