首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用允诺顺序执行函数

使用允诺顺序执行函数
EN

Stack Overflow用户
提问于 2014-03-04 15:12:11
回答 1查看 1.6K关注 0票数 5

我想顺序执行一些基于数组的异步函数。

我以为这样就行了:

代码语言:javascript
复制
var Promise = require("bluebird");
Promise.cast([1,2,3]).reduce(function(_,i){
    console.log("Launching  " + i);
    return Promise.delay(Math.floor(Math.random()*1000)).then(function(){
        console.log("Executing  " + i);
    });
},0);

但我得到

代码语言:javascript
复制
Launching  1
Launching  2
Launching  3
Executing  2
Executing  1
Executing  3

而不是期望的结果

代码语言:javascript
复制
Launching  1
Executing  1
Launching  2
Executing  2
Launching  3
Executing  3

我如何确保在这里完全连续执行?

请注意,我知道如何在没有承诺的情况下做到这一点,我只对完整的承诺解决方案感兴趣。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-04 15:19:46

你用的是蓝鸟的旧版本。.reduce的行为在v1中被更改为这样工作:

.map.filter一样,.reduce现在允许从迭代函数中返回承诺和支持。

( 来自变革者g )

请更新到最新版本。这将导致代码正确运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22175723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档