Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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_Promise - Fatal编程技术网

Javascript 处理多个承诺拒绝

Javascript 处理多个承诺拒绝,javascript,promise,Javascript,Promise,检查单个承诺组合器: 但我没有看到的是,一种履行所有承诺的方式,而不是在一个承诺被拒绝时短路。如何确保所有承诺都得到执行,但我可以处理拒绝和所有承诺的解决方案?您可以在单个承诺中添加一个捕获,指示希望错误如何显示在最终结果中。因为catch返回一个promise,当您运行promise.all时,您将能够得到错误作为结果。例如: //一些承诺: 设p=[ 承诺,承诺, 答应我,我有错误, 承诺,承诺 ] 让结果=Promise.allp.mappr=> 公共关系 .thenv=>值:+v .c

检查单个承诺组合器:

但我没有看到的是,一种履行所有承诺的方式,而不是在一个承诺被拒绝时短路。如何确保所有承诺都得到执行,但我可以处理拒绝和所有承诺的解决方案?

您可以在单个承诺中添加一个捕获,指示希望错误如何显示在最终结果中。因为catch返回一个promise,当您运行promise.all时,您将能够得到错误作为结果。例如:

//一些承诺: 设p=[ 承诺,承诺, 答应我,我有错误, 承诺,承诺 ] 让结果=Promise.allp.mappr=> 公共关系 .thenv=>值:+v .catch=>error:+e//添加catch以防止错误停止所有
results.thenconsole.Log您不是真的描述了所有已解决的提案吗?承诺在创建时运行。一种实现所有承诺的方法——只要创造所有承诺,它们就会实现,就是这样。另外,承诺可以拒绝也可以解决,而不是两者兼而有之——处理拒绝,所有承诺的解决似乎都与我的陈述相矛盾。你能在心里重新表述你的问题吗?这里有多种解决方法:or.catch不是必需的,也不是为前面的then调用提供第二个参数的同一件事。catch处理承诺被拒绝的值,但它是使用前一个承诺的拒绝处理程序返回的值创建的承诺,即正在创建和处理第二个承诺。简言之,如果有一个承诺,那么这两件事就不一样了。但是关于这个主题,请参阅:请放心,在您的代码片段中,使用catch是不必要的,不这样做不会是反模式的情况。Promise.allp.mappr=>pr.thenvalue=>{value},reason=>{reason}生成一个用承诺数组解析的承诺,其中每个这样的承诺都用一个对象解析,该对象的值属性引用原始封装承诺的解析值,或者具有引用原始封装承诺的拒绝原因的reason属性的对象。与您的示例类似,但没有一个then和一个catch。