Javascript 赞成和反对的用法在地图上等待着承诺

Javascript 赞成和反对的用法在地图上等待着承诺,javascript,node.js,loops,async-await,Javascript,Node.js,Loops,Async Await,我想知道:在map/for…of等循环中使用wait有什么负面影响吗 这有什么利弊呢 wait Promise.all(products.map)(异步(产品)=>{ 等待产品。CreateProductIfDoesntExists(参数); })); 您询问了wait in循环,但您的示例显示了一种特定的循环,调用map所以,wait in map 赞成者: 很多请求都会启动,可能都是并行的,因此速度可能会更快,这取决于Product.createProductIfdoeSntextists

我想知道:在map/for…of等循环中使用wait有什么负面影响吗

这有什么利弊呢

wait Promise.all(products.map)(异步(产品)=>{
等待产品。CreateProductIfDoesntExists(参数);
}));

您询问了wait in循环,但您的示例显示了一种特定的循环,调用
map
所以,wait in map

赞成者:

  • 很多请求都会启动,可能都是并行的,因此速度可能会更快,这取决于
    Product.createProductIfdoeSntextists
    的功能
反对:

  • 可能会使用太多内存,具体取决于产品的数量和工作类型
    Product.createProductifdoesntextists
    的工作
这里有一个简单的例子:在这种情况下,5件事意味着一次使用80兆,但它在2秒钟内完成

const wait=(ms)=>新承诺(resolve=>setTimeout(resolve,ms));
异步函数processThing(){
常数数据=新的UINT8阵列(1024*1024*16);
等待等待(2000年);
返回数据[data.length-1];//假设我们使用数据
}
异步函数main(){
常量项=['a','b','c','d','e'];
等待承诺.all(things.map)(异步(thing)=>{
等待事物(事物);
}));
log('--done--');
}

main()
您询问了wait in循环,但您的示例显示了一种特定的循环,调用
map
so,wait in map

赞成者:

  • 很多请求都会启动,可能都是并行的,因此速度可能会更快,这取决于
    Product.createProductIfdoeSntextists
    的功能
反对:

  • 可能会使用太多内存,具体取决于产品的数量和工作类型
    Product.createProductifdoesntextists
    的工作
这里有一个简单的例子:在这种情况下,5件事意味着一次使用80兆,但它在2秒钟内完成

const wait=(ms)=>新承诺(解析=>setTimeout(解析,ms));
异步函数processThing(){
常数数据=新的UINT8阵列(1024*1024*16);
等待等待(2000年);
返回数据[data.length-1];//假设我们使用数据
}
异步函数main(){
const things=['a','b','c','d','e'];
等待承诺.all(things.map)(异步(thing)=>{
等待事物(事物);
}));
log('--done--');
}

main()我可能遗漏了一些东西,但好吧,不管回调中是否有
等待
,您描述的事情都会发生。基本上,您列出了
Promise的利弊。所有这些都与Promise无关。所有这些都与在
map中使用wait有关。我忘了添加Promise.all到主题:)。谢谢你的评论。这不会改变我的答案。无论你是否等待所有事情完成,都要承诺。所有的
他们仍然在同一时间做着潜在的事情。下载数据,解码图像。这是否是一个问题取决于您的产品中实际发生了什么。所有的承诺。所做的只是等待所有的承诺。这不会改变他们的执行方式。因此,这应该是没有承诺的。所有人都要一个接一个地执行,就像下面这样,我说的对吗<代码>javascript products.map(异步(产品)=>{await product.createProductifDoesTextists(参数);})我可能遗漏了一些东西,但好吧,不管回调中是否有
等待
,您描述的事情都会发生。基本上,您列出了
Promise的利弊。所有这些都与Promise无关。所有这些都与在
map中使用wait有关。我忘了添加Promise.all到主题:)。谢谢你的评论。这不会改变我的答案。无论你是否等待所有事情完成,都要承诺。所有的
他们仍然在同一时间做着潜在的事情。下载数据,解码图像。这是否是一个问题取决于您的产品中实际发生了什么。所有的承诺。所做的只是等待所有的承诺。这不会改变他们的执行方式。因此,这应该是没有承诺的。所有人都要一个接一个地执行,就像下面这样,我说的对吗<代码>javascript products.map(异步(产品)=>{await product.createProductifDoesTextists(参数);})