我有一个异步函数,在上一个异步请求完成之前不应执行另一个异步请求。
pendingCatalogRequest = WinJS.Promise.as();
loadCatalogAsync = function(name) {
var loadAsync = function() {
return getXmlAsync("catalogdata/" + name);
}
return pendingCatalogRequest = pendingCatalogRequest.then(loadAsync, loadAsync);
}
这是处理此问题的正确方法吗?或者我错过了什么?
当剩下loadAsync
函数时,是否会收集loadCatalogAsync
封闭垃圾?
答案 0 :(得分:0)
这是处理此问题的正确方法吗?
是的,这看起来很好。
或者我错过了什么?
考虑拒绝会发生什么 - 他们会阻止整个队列。您可能希望有关更完整的示例,请参阅here。.catch
用于排队承诺。
当剩下
loadAsync
函数时,是否会收集loadCatalogAsync
封闭垃圾?
不,它会在运行后收集垃圾,直到那时pendingCatalogRequest.then
方法仍然保留对它的引用。