问:是否存在一些功能来调用一组参数的一些承诺和"所有" -ify它没有样板 - 每个代码?

时间:2016-05-25 21:05:33

标签: bluebird

我很难在标题中简单地描述这个,所以我会粘贴我的打字代码来实现我所说的 -

aggregate<T, A>(args: A[], invokable: (arg: A) => promise<T>): promise<T[]> {
    let allPromises = new Array<promise<T>>();
    for (let arg of args) {
        allPromises.push(invokable(arg));
    }
    return promise.all(allPromises);
}

这将获取类型A的参数列表,并且每个参数都会调用一些函数(它返回一个返回类型为T的promise)。这些承诺中的每一个都被收集到一个列表中,然后全部归还并返回。

我的问题是,这个功能在Bluebird中是否已经存在,因为我宁愿正确地做事并使用现有的,经过测试的功能!我在解决一些文档时遇到了问题所以我可能没有找到我应该拥有的东西!

1 个答案:

答案 0 :(得分:1)

使用Array.prototype.map可以完全解决您的问题。

您的代码可以转换为:

aggregate<T, A>(args: A[], invokable: (arg: A) => promise<T>): promise<T[]> {
    return promise.all(args.map(invocable));
}