Promise.all可以把[Promise a, Promise b]
变成Promise [a, b]
, super 好用,但是有没有办法转{a: Promise a, b: Promise b}
变成 Promise {a, b}
。
用例是:
我有一个函数可以从网站加载一些文件,并在失败时返回错误消息。
这意味着,它的签名是 information -> {values: values, messages: messages}
。
但是整个检查是异步的,所以结果是 information -> {values: Promise values, messages: promise messages}
最佳答案
这是我的 super 简单的解决方案:
export const objectZip = (keys, values) =>
keys.reduce(
(others, key, index) => ({
...others,
[key]: values[index],
}),
{}
);
export const objectPromise = async obj =>
objectZip(Object.keys(obj), await Promise.all(Object.values(obj)));
关于javascript - Promise.all 用于 Javascript 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050414/