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

我有 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: 错误: 超出最大重试次数”


蝴蝶刀刀
浏览 117回答 1
1回答

喵喵时光机

ASYNC / AWAIT您可以使用和的组合Promise.all来按预期填充allProductInfo。需要注意的ASYNC / AWAIT是,您只能在 ASYNC 函数内使用 ASYNC 函数。activeProductBank.map将迭代您的所有activeProductBank并返回一个 Promise 数组,然后将其传递给 ,Promise.all然后在列表中的所有 Promise 都解决后解析。Promise.allgetProductInfo = 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);};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript