javascript - 使用异步/等待延迟强制请求之间的时间

标签 javascript node.js async-await

具有以下函数“sendBulkProducts”,该函数接收对象数组(即产品)并在本例中使用 API(在 Shopify 中)并每秒发送一对(2)产品,直到结束循环。即发送两个产品等待一秒,然后发送另外两个产品等待一秒,依此类推。

使用包delay

但是它没有等待 1 秒,所以想知道代码中的哪一步是错误的?

 const sendBulkProducts = (products) => {
        const promisesArray = products.map( async (product,index) => {
            console.log(product);
            console.log('\n\n');
            console.log(index % 2);
            if(index % 2 !== 0){
                insertProductShopify({
                    "product":product
                });
                console.log('wait 1 seconds');
                return await delay(1000);
            }else{
                console.log('send away');
                return insertProductShopify({
                    "product":product
                });
            }
        });
        return Promise.all(promisesArray);
    }

const insertProductShopify = async product => {
  await request({
   .....
  });
}

最佳答案

products.map 并行发送所有产品,您需要迭代它们。

const sendBulkProducts = async(products) => {
  let index = 0
  for (let product of products) {
    insertProductShopify({product})
    if (++index % 2 == 0){
      await delay(1000)
    }
  }
}

关于javascript - 使用异步/等待延迟强制请求之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560054/

相关文章:

.net - 当异步操作没有被处理时,它们在哪里等待?

javascript - Firefox 和 Opera 使用 javascript 放大缩小

javascript - 在导航栏上更改 'current' 类

javascript - 在CKEditor中,如何在删除目标选项卡的同时将链接设置为默认在新窗口中打开?

javascript - 如何修复 ' variable in loof with innerText'

asp.net - IIS请求处理线程池与TPL线程池相同吗?

javascript - 在弹出窗口中显示完整的 html(元、头部、正文)

node.js - Node 的 Sequelize 不允许在主键上自动生成 UUID *除非*字段名称是 'id'

json - 如何将 JSON 数组保存到 mongodb 集合中

javascript - Node : Confusing behaviour related to saving a TypeORM model using await inside a callback/promises clearing