我正在使用kriskowal q实现。
我有一组数据对象,每个都有一个id。
我需要将这些顺序链接到promises中,因为我通过将其设置为每秒1个请求来遵守速率限制规则。
但是,我无法解决承诺和我的功能停顿。即我看到addVideo,getInfo,retryIfNeeded的输出以及第一个视频的延迟为1秒,但我没有看到任何后续视频的任何内容。
我想要做的是在延迟之后,解决该链,以便下一个承诺列表继续在第二个视频ID上。
我该怎么做?我究竟做错了什么?我在谷歌搜索了很多但是没有找到解决方案,所以欢迎任何建议
编辑添加的jsfiddle:http://jsfiddle.net/07t069uf/5
var promiseChain = data.items.reduce(function(promise, video) {
video.type = type;
return promise
.then(addVideo)
.then(getInfo)
.then(retryIfNeeded)
.then( function() {
return q.delay(1000)
.done(function() {
NEED TO RESOLVE HERE but there is NO Defered object
to set defer.resolve. How do I resolve this promise chain?
});
});
}, q.resolve(data.items[0]));
答案 0 :(得分:1)
您无需解决任何问题。
您应该简单地返回延迟的承诺,这将成为整个链的价值 这正是承诺链的工作原理。