序列promise链与数组数据,如何解析promise链

sequential promise chain with array of data, how to resolve the promise chain?

本文关键字:promise 何解析 数组 序列 数据      更新时间:2024-06-27

我使用的是kriskowal q实现。

我有一个数据对象数组,每个对象都有一个id。

我需要将这些顺序链接到承诺中,因为我遵守速率限制规则,将其设置为每秒1个请求。

然而,我在解决承诺方面遇到了困难,我的功能也停滞了。也就是说,我看到了addVideo、getInfo、retryIfNeeded的输出,以及第一个视频的1秒延迟,但我没有看到任何后续视频的延迟。

我想做的是在延迟之后,解决这个链,以便在第二个视频ID上继续下一个承诺列表。

我该怎么做?我做错了什么?我在谷歌上搜索了很多,但还没有找到解决方案,所以任何建议都欢迎

编辑添加的jsfiddle:http://jsfiddle.net/gpa7ym18/4

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]));

您不需要解决任何问题。

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