javascript - Promise.all 用于 Javascript 中的对象

标签 javascript asynchronous promise

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/

相关文章:

javascript - momentjs 覆盖今天的默认全局日期

Javascript SignalR 等到服务广播所有消息

javascript - 如何同步确定 JavaScript Promise 的状态?

javascript - 何时不使用 promise

javascript - Node.js 脚本未完成就停止且没有声音

javascript - 将异步代码转换为 Promise

javascript - 如何将提供者正确附加到reactDOM.render

javascript - 如何在当前网页上创建和显示自己设计的窗口而不是弹出窗口?

javascript - 在 Node.js 的 setTimeout() 回调中绑定(bind) `this`

javascript - 对于 NodeJs Promise,Await 和 Then 哪个更好?以及等待如何工作