【发布时间】:2015-10-28 12:27:55
【问题描述】:
我正在尝试使用他们针对sequences 的第一个策略来运行基于Q API 的一系列函数。这表明了这种模式:
var funcs = [foo, bar, baz, qux];
var result = Q(initialVal);
funcs.forEach(function (f) {
result = result.then(f);
});
return result;
数组中的每个函数的结构是什么?我对何时使用return def.promise; 感到很困惑。那总是最后一行吗?它会经常还是总是立即关注def.resolve(someVar)。像这样的结构是这样的吗?
function foo(f){
var def = Q.defer();
f++;
def.resolve(f);
return def.promise;
}
这样数组中的每个后续函数都将接收到新计算的f值:在这种情况下,如果var initialVal = 1;和四个函数每个递增f++,返回的结果将是4?如何访问该返回值? console.log(result) 打印 { state: 'pending' } 。
【问题讨论】:
-
如果你愿意,你可以试试我前几天写的一些代码。您可以在codereview.stackexchange.com/questions/98134/… 上找到它。遗憾的是,我还没有在 github 上发布经过审查的版本。但是,如果你有兴趣,我今天可以做。基本上,您将函数添加到按顺序执行它们的队列中。它需要以毫秒为单位的延迟,但您可以运行的函数数量是无限的。还是我误解了这个问题?
-
@IsmaelMiguel 非常感谢。不,你没有误解这个问题。但是,这对于我的需求来说有点复杂,因为我只是以最基本的方式学习这一点。我更多的是寻找如何使用队列中已知数量的函数来实现这一点,因此我最终可以发展到更高级别的复杂性。不过非常感谢。我已经为你的函数添加了书签:)
-
对不起,但我不明白这一点:“我更多的是寻找如何使用队列中已知数量的函数来实现这一点”。可能少了一个字。
-
@IsmaelMiguel 如果知道队列中的函数数量怎么办。
-
@IsmaelMiguel "...如何做这个..." ;)
标签: javascript node.js promise q deferred