使用WinJS.Promise顺序化异步函数调用

时间:2015-04-17 12:13:17

标签: javascript asynchronous promise winjs

我有一个异步函数,在上一个异步请求完成之前不应执行另一个异步请求。

pendingCatalogRequest = WinJS.Promise.as();
loadCatalogAsync = function(name) {
    var loadAsync = function() {
      return getXmlAsync("catalogdata/" + name);
    }
    return pendingCatalogRequest = pendingCatalogRequest.then(loadAsync, loadAsync);
}

这是处理此问题的正确方法吗?或者我错过了什么?

当剩下loadAsync函数时,是否会收集loadCatalogAsync封闭垃圾?

1 个答案:

答案 0 :(得分:0)

  

这是处理此问题的正确方法吗?

是的,这看起来很好。

  

或者我错过了什么?

考虑拒绝会发生什么 - 他们会阻止整个队列。您可能希望.catch用于排队承诺。有关更完整的示例,请参阅here

  

当剩下loadAsync函数时,是否会收集loadCatalogAsync封闭垃圾?

不,它会在运行后收集垃圾,直到那时pendingCatalogRequest.then方法仍然保留对它的引用。