为了账号安全,请及时绑定邮箱和手机立即绑定

尝试传递数组并使用foreach发回多个数据

尝试传递数组并使用foreach发回多个数据

蝴蝶刀刀 2023-07-20 15:41:37
我有 getProductInfo orgianlly,作为两个参数,它的位置是(res,sku)。但现在我想传递一个带有 sku 编号的集合对象和 for-each res.send 数据const activeProductBank = new Set([6401728, 6430161, 6359222, 6368084]);getProductInfo = (res) => {    activeProductBank.forEach((SKU) => {        bby.products(SKU, { show:'sku,name' })        .then(function(data) {            res.send(data);        });    })};也尝试过这个getProductInfo = (res) => {    const allProductInfo = '';    activeProductBank.forEach((SKU) => {        bby.products(SKU, { show:'sku,name'})        .then(function(data) {            allProductInfo.concat(data);        });    })    res.send(allProductInfo);};我收到的错误“应用程序正在监听 http://localhost:3000 (node:25556) UnhandledPromiseRejectionWarning: 错误: 超出最大重试次数”
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

ASYNC / AWAIT您可以使用和的组合Promise.all来按预期填充allProductInfo

需要注意的ASYNC / AWAIT是,您只能在 ASYNC 函数内使用 ASYNC 函数。

activeProductBank.map将迭代您的所有activeProductBank并返回一个 Promise 数组,然后将其传递给 ,Promise.all然后在列表中的所有 Promise 都解决后解析。

Promise.all

getProductInfo = async (res) => {


    const allProductInfo = Promise.all(

                                activeProductBank.map(SKU => bby.products(SKU, { show:'sku,name'}))

                            )

    

    res.send(allProductInfo);

};

另一种方法是使用 for..of 循环并使用 Await 调用逐一推送每个 ProductInfo 的响应,如下所示


getProductInfo = async (res) => {

    let allProductInfo = [];


    for(let sku of allProductInfo) {

        const productInfo = await bby.products(sku, { show:'sku,name'});

        allProductInfo.push(productInfo);

    }

    

    res.send(allProductInfo);

};


查看完整回答
反对 回复 2023-07-20
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信