具有以下函数“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/