当承诺链parsing时执行函数
我已经编写了使用Q.reduce机制的代码,其中函数insertItemIntoDatabase(item)返回parsing的promise。
items.reduce(function(soFar,item) { return soFar.then(function() { return insertItemIntoDatabase(item); }); },Q());
是否有任何可能性等待链完成,然后执行另一个function,或者我应该用其他方式链接这些function。
提前感谢您的帮助
.reduce()
将从.reduce()
循环返回最终值,在你的情况下这是最后的承诺。 要在.reduce()
链及其所有asynchronous操作完成后执行某些操作,只需将一个.then()
处理程序放在返回的最终承诺上:
items.reduce(function(soFar,item) { return soFar.then(function() { return insertItemIntoDatabase(item); }); },Q()).then(someOtherFunction);
这个模式的目的正是这样的:返回序列结果的承诺。 写出(没有reduce
),这完全等同于expression式
Q() .then(function() { return insertItemIntoDatabase(items[0]); }) .then(function() { return insertItemIntoDatabase(items[1]); }) .then(function() { return insertItemIntoDatabase(items[2]); }) …
你可以简单地添加另一个.then()
,它将在链的末尾调用你的callback函数。