Javascript 解析Promise.all,将Promise作为数组或对象的一部分
我正在尝试将一组异步调用排队以并行启动。但是,我正在排队的承诺有额外的数据,我希望这些数据与承诺值保持一致 我的问题是:如何传递包含承诺的对象或数组,并将承诺解析为对象中的值 例如,让我们生成一个普通的承诺数组: 异步函数异步函数(输入){ 返回输入*10; } 异步函数main(){ var承诺=[]; for(设i=0;i<10;i++){ promises.push(异步函数(i)); } var结果=等待承诺。全部(承诺); document.getElementById('output').innerText=JSON.stringify(结果); } main()代码>Javascript 解析Promise.all,将Promise作为数组或对象的一部分,javascript,promise,Javascript,Promise,我正在尝试将一组异步调用排队以并行启动。但是,我正在排队的承诺有额外的数据,我希望这些数据与承诺值保持一致 我的问题是:如何传递包含承诺的对象或数组,并将承诺解析为对象中的值 例如,让我们生成一个普通的承诺数组: 异步函数异步函数(输入){ 返回输入*10; } 异步函数main(){ var承诺=[]; for(设i=0;i
您可以将承诺推送到您想要的格式:
异步函数异步函数(输入){
返回输入*10;
}
异步函数main(){
让承诺=[];
for(设i=0;i<10;i++){
承诺,推动(
异步函数(i)。然后(值=>({
id:我,
价值
}))
);
}
让结果=等待承诺。全部(承诺);
控制台日志(结果);
}
main()代码>您可以映射承诺数组,并等待包含承诺的值键解析
async function asyncFunction(input) {
return input * 10;
}
async function main() {
var promises = [];
for (let i = 0; i < 10; i++) {
promises.push({
id: i,
value: asyncFunction(i)
});
}
var result = await Promise.all(promises.map(async (promise) => ({
id: promise.id,
value: await promise.value
})));
document.getElementById('output').innerText = JSON.stringify(result);
}
main();
异步函数异步函数(输入){
返回输入*10;
}
异步函数main(){
var承诺=[];
for(设i=0;i<10;i++){
承诺,推动({
id:我,
值:异步函数(i)
});
}
var结果=等待承诺.all(承诺.map)(异步(承诺)=>({
我保证,
价值:等待承诺
})));
document.getElementById('output').innerText=JSON.stringify(结果);
}
main();
谢谢回想起来这是有道理的,但我相信我误解了一些东西,让我觉得我的代码也可以工作。是不是我在传递一个不是直接承诺清单的东西给
承诺。所有的?@ShawnTabrizi:是的<代码>承诺。所有
都将任何看起来不像承诺的内容视为立即解决,并且{id:,value:}
看起来不像承诺。