顺序保证链与数据数组,如何解决承诺链?

时间:2016-04-14 22:35:03

标签: javascript promise q

我正在使用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]));

1 个答案:

答案 0 :(得分:1)

您无需解决任何问题。

您应该简单地返回延迟的承诺,这将成为整个链的价值 这正是承诺链的工作原理。