【问题标题】:How to solve this problem without using setTimeOut? [duplicate]如何在不使用 setTimeOut 的情况下解决此问题? [复制]
【发布时间】:2020-08-21 17:15:49
【问题描述】:
async function sellerSelection() {
    let selectedSellerArray = [];
    await orders.forEach(async (order) => {
        let orderItems = await orderItemsObj.findMany({
            where: { order_id: order.id, status: "created" },
        });
        console.log(orderItems.length, "order items");
        orderItems.forEach(async (orderItem) => {
            const sellerSelect = await _calculateHighProfitSeller(
                order.id,
                orderItem
            );

            selectedSellerArray.push(sellerSelect.seller_id);
        });
    });
    setTimeout(() => {
        console.log(selectedSellerArray, "selectedSellerArray");
    }, 1000);
}

大家好,我正在学习nodejs,并没有正确掌握 里面有异步的东西。所以,在上面的代码中,如果我不使用 setTimeOut(),_calculateHighProfitSeller() 不会返回 值足够快,但代码无论如何都会执行,所以我得到一个空的 任何事物。我想要做的是执行 setTimeOut() 中的代码 仅在 _calculateHighProfitSeller() 调用返回其所有 价值观。

【问题讨论】:

  • await orders.forEach 没有意义 await Promise.all(orders.map...)
  • @YuryTarabanko 好的先生,我也试试这个,谢谢
  • @YuryTarabanko 但是我如何通过这样做得到sellerSelect 数组,先生。能详细点吗,谢谢

标签: javascript node.js async-await


【解决方案1】:

使用.map 而不是.forEach

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

async function sellerSelection() {
    let selectedSellerArray = await orders.map(async (order) => {
        let orderItems = await orderItemsObj.findMany({
            where: { order_id: order.id, status: "created" },
        });
        console.log(orderItems.length, "order items");
        return await orderItems.map(async (orderItem) => {
            let { seller_id } = await _calculateHighProfitSeller(
                order.id,
                orderItem
            );
            return seller_id;
        });
    });
    console.log(selectedSellerArray, "selectedSellerArray");
}

【讨论】:

猜你喜欢
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 2020-08-17
  • 1970-01-01
  • 2020-12-20
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多