我如何等待这些承诺中的每一个异步执行?

How do I wait for each of these promises to execute asynchronously?

conversation.user 和 conversation.secondUser 附加到会话对象,但嵌套消息循环在响应发送到客户端后执行。

    find: [
        async (context) => {
            await Promise.all(context.result.data.map((conversation) => {
                return context.app.service('users').get(conversation.userId).then((data) => {
                    conversation.user = data;

                    return context.app.service('users').get(conversation.secondUserId).then((data) => {
                        conversation.secondUser = data;

                        return conversation.messages.map((message) => {
                            return context.app.service('users').get(message.userId).then((data) => {
                                console.log(data);
                                message.user = data;
                            });
                        });
                    });
                });
            }));

            context.dispatch = context.result;
            return context;
        }
    ],

两件事:

  1. 您在上一节中忘记了 Promise.all
  2. 您没有充分利用 async/await
  3. ,这让您的生活更加艰难

这应该有效:

find: [
  async (context) => {
    await Promise.all(context.result.data.map(async (conversation) => {
      const data = await context.app.service('users').get(conversation.userId);
      const secondData = await context.app.service('users').get(conversation.secondUserId);

      conversation.user = data;
      conversation.secondUser = secondData;

      await Promise.all(conversation.messages.map(async (message) => {
        const data = await context.app.service('users').get(message.userId);

        console.log(data);
        message.user = data;
      }));
    }));

    context.dispatch = context.result;

    return context;
  }
]