如何在不使用setTimeOut的情况下解决此问题


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((调用返回其所有价值观

使用.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");
}

相关内容

最新更新