【发布时间】:2013-12-30 13:47:18
【问题描述】:
我有一个函数流,其中一个(first 函数)是异步的并返回一个承诺。此函数调用其他异步函数 (nestedAssyncFunction_*)。当第一个函数及其所有嵌套函数返回时,必须调用第二个函数。所以我需要在几个地方解析延迟对象(在三个嵌套函数的例子中)。
var deferred = Q.defer();
first().then(second);
function first() {
nestedAssyncFunction_1();
nestedAssyncFunction_2();
nestedAssyncFunction_3();
return deferred.promise;
}
function second() {
// some actions
}
所以我的主要问题是:如何通过几个步骤解决延迟问题?
到目前为止,我发现我可以从多个地方调用notify 方法,并在其处理程序内部解析主要的延迟对象。像这样:
var deferred = Q.defer();
deferred.progressCounter = 0;
first().then(second, undefined, notifyHandler);
function notifyHandler() {
deferred.progressCounter++;
if (deferred.progressCounter === 3) {
deferred.resolve();
}
}
function nestedAssyncFunction_1() {
// some actions
deferred.notify();
}
但是我的问题是:将自定义属性添加到延迟对象的最佳方法是什么? 因为它似乎不喜欢这样做,就像上面的例子一样。
感谢。
【问题讨论】:
标签: javascript asynchronous q