2

例如:

    return getPackages()
        .map(function(package){
            console.log(package.name);
            return latestAsync(package.name)
        })
        .each(function(version) {
            //I want package to make it so it will be in this scope too
            console.log(package.name, package.version, version) 
        });

我想package在承诺完成时发送到下一个。
这怎么可能?

我正在使用蓝鸟。

4

1 回答 1

2

您可以使用它返回一个复合值Promise.props

return getPackages()
    .map(function(package){
        console.log(package.name);
        return Promise.props({version: latestAsync(package.name), package: package });
    })
    .each(function(r) {
        //I want package to make it so it will be in this scope too
        console.log(r.package.name, r.package.version, r.version) 
    });

替代解决方案是:

  • 用于显.bind式设置范围并依赖索引。
  • 嵌套一层并使用闭包范围(将 a.then放在 上latestAsync)。
  • 对数组使用类似的方法,而不是使用Promise.all.
于 2014-07-20T22:31:37.603 回答