问:是否存在通过参数数组调用某些 promise 并 "all"- 化它而无需样板 for-each 代码的功能?
Q: Does functionality exist to invoke some promise over an array of arguments and "all"-ify it without boilerplate for-each code?
我一直在努力在标题中简洁地描述这一点,所以我将粘贴实现我所说内容的打字稿代码 -
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 的参数列表,并为每个参数调用一些函数(returns 一个 returns 类型 T 的承诺)。这些承诺中的每一个都被收集到一个列表中,然后 all-ified 并返回。
我的问题是,此功能是否已经存在于 Bluebird 中,因为我宁愿正确地做事并使用现有的、经过测试的功能!我无法理解一些文档,所以我可能没有理解我应该拥有的东西!
你的问题完全可以用 Array.prototype.map
解决。
您的代码可以变成:
aggregate<T, A>(args: A[], invokable: (arg: A) => promise<T>): promise<T[]> {
return promise.all(args.map(invocable));
}
我一直在努力在标题中简洁地描述这一点,所以我将粘贴实现我所说内容的打字稿代码 -
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 的参数列表,并为每个参数调用一些函数(returns 一个 returns 类型 T 的承诺)。这些承诺中的每一个都被收集到一个列表中,然后 all-ified 并返回。
我的问题是,此功能是否已经存在于 Bluebird 中,因为我宁愿正确地做事并使用现有的、经过测试的功能!我无法理解一些文档,所以我可能没有理解我应该拥有的东西!
你的问题完全可以用 Array.prototype.map
解决。
您的代码可以变成:
aggregate<T, A>(args: A[], invokable: (arg: A) => promise<T>): promise<T[]> {
return promise.all(args.map(invocable));
}