Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何找出哪一个承诺解决了承诺。有吗?_Javascript_Ecmascript 6_Promise - Fatal编程技术网

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)),而不是保留对特定承诺的引用,您也可以只保留正在运行的数量的计数。如果完成任何操作,请添加一个新的。