Javascript 如何找出哪一个承诺解决了承诺。有吗?
我用Javascript 如何找出哪一个承诺解决了承诺。有吗?,javascript,ecmascript-6,promise,Javascript,Ecmascript 6,Promise,我用Promise.all做了一些批处理IO,但最终我一次创建了太多IO承诺,达到了打开文件的极限。因此,我制作了一个实用程序,最多50个批次运行这些承诺 一种解决方案是将任务分成50个批次,然后在每个批次上执行Promise.all。但更明智的解决方案是在承诺解决时循环使用Promise.any。问题是,Promise.any只返回结果,而不返回哪个Promise 如何找出已解决的问题,以便我可以在批处理中用新的未解决问题替换它?没有本机方法找到已完成的承诺 但我想到了一个解决办法。基本上,我
Promise.all
做了一些批处理IO,但最终我一次创建了太多IO承诺,达到了打开文件的极限。因此,我制作了一个实用程序,最多50个批次运行这些承诺
一种解决方案是将任务分成50个批次,然后在每个批次上执行Promise.all
。但更明智的解决方案是在承诺解决时循环使用Promise.any
。问题是,Promise.any
只返回结果,而不返回哪个Promise
如何找出已解决的问题,以便我可以在批处理中用新的未解决问题替换它?没有本机方法找到已完成的
承诺
但我想到了一个解决办法。基本上,我为每个Promise
分配了一个id,然后我对Promise
的返回值进行分解,并注销id和结果
const Promise4=fetch('https://pokeapi.co/api/v2/ability/?limit=1&offset=20)。然后(response=>response.json())。然后(result=>({
id:4,
结果
}));
const Promise1=fetch('https://pokeapi.co/api/v2/ability/?limit=1&offset=12)。然后(response=>response.json())。然后(result=>({
id:1,
结果
}));
const Promise2=fetch('https://pokeapi.co/api/v2/ability/?limit=1&offset=5)。然后(response=>response.json())。然后(result=>({
id:2,
结果
}));
const Promise3=fetch('https://pokeapi.co/api/v2/ability/?limit=1&offset=23)。然后(response=>response.json())。然后(result=>({
id:3,
结果
}));
任何([允诺人1,允诺人2,允诺人3,允诺人4])。然后(({
身份证件
结果
})=>console.log(`Promise${id}返回`,result.results[0].name))代码>,而不是保留对特定承诺的引用,您也可以只保留正在运行的数量的计数。如果完成任何操作,请添加一个新的。