序列promise链与数组数据,如何解析promise链
sequential promise chain with array of data, how to resolve the promise chain?
我使用的是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]));
您不需要解决任何问题。
你应该简单地返回延迟的承诺,这将成为整个链条的价值
这正是承诺链的工作原理。
相关文章:
- 根据是否解析了 Promise 从函数返回值
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- 如何为javascript promise进行阻塞并返回解析结果
- angular ui bootstrap:当模式关闭时,promise被解析/拒绝
- JavaScript Promise 解析并拒绝函数调用序列
- 渲染Ember手把模板中解析的promise值
- 序列promise链与数组数据,如何解析promise链
- 缓存的$q promise在测试中运行时不会解析
- 等待promise解析后再执行代码
- 如何在解析Promise时运行qunit断言
- 如何使用odatarsources.JS库正确解析AngularJS应用程序中的JS promise
- 如何使EXPECT条件等待promise被解析(代码封装在方法中)
- 测试规范在$rootScope之前执行$apply()已完成对promise的解析
- Promise.all()方法没有't解析为一个值
- Promise.all:解析值的顺序
- 如果 then 处理程序不返回任何内容,则链式 Promise 的解析值是多少
- 如何正确地将 Function.apply.bind 应用于 Promise 的解析处理程序 then()
- 在promise .race中第一个promise被解析(拒绝)后执行是否结束
- AngularJS:在Promise被解析后,为新视图操作DOM
- 如果promise未解析,promise .all()将无法接收数据