Javascript 并行承诺的自定义错误处理
我有一套承诺,我想通过Javascript 并行承诺的自定义错误处理,javascript,Javascript,我有一套承诺,我想通过Promise.all并行执行。我还希望通过以下方式忽略错误(如果有): Promise.all(promises.map(p=>p.catch(()=>undefined)) 我试图理解返回undefined在这里有什么帮助(我可以返回错误吗?)。如果我想要一些基于状态代码的定制逻辑,是否需要以下工作 Promise.all(promises.map(p => p.catch(error => { if (error.statusCode === 40
Promise.all
并行执行。我还希望通过以下方式忽略错误(如果有):
Promise.all(promises.map(p=>p.catch(()=>undefined))代码>
我试图理解返回undefined
在这里有什么帮助(我可以返回错误吗?)。如果我想要一些基于状态代码的定制逻辑,是否需要以下工作
Promise.all(promises.map(p => p.catch(error => {
if (error.statusCode === 400) return error;
throw error;
})));
我只想忽略那些状态代码为400的错误,但保留所有其他错误的原始行为 您的方法:
const results=wait Promise.all(promises.map)(p=>p.catch(error=>{
if(error.statusCode==400)返回错误;
投掷误差;
})));
…将正常工作,前提是使用结果的代码知道它将接收结果和错误对象的混合。版本:
const results=wait Promise.all(promises.map(p=>p.catch(()=>undefined));
…使结果
数组在出现错误的每种情况下都具有值未定义
。您所做的取决于您希望结果是什么样子。您的方法:
const results=wait Promise.all(promises.map)(p=>p.catch(error=>{
if(error.statusCode==400)返回错误;
投掷误差;
})));
…将正常工作,前提是使用结果的代码知道它将接收结果和错误对象的混合。版本:
const results=wait Promise.all(promises.map(p=>p.catch(()=>undefined));
…使结果
数组在出现错误的每种情况下都具有值未定义
。您所做的取决于您希望结果是什么样子。是的,这应该有效。catch(fn)
的语义是:
- 如果
fn
返回一个值,则使用该值解析承诺。(除非返回的值本身是一个被拒绝的承诺,但这里的情况并非如此。)
- 如果
fn
抛出异常,则该承诺将被该异常拒绝
如果从catch
处理程序返回错误,Promise.all
可能返回一个包含成功值和错误的数组。是,这应该可以工作。catch(fn)
的语义是:
- 如果
fn
返回一个值,则使用该值解析承诺。(除非返回的值本身是一个被拒绝的承诺,但这里的情况并非如此。)
- 如果
fn
抛出异常,则该承诺将被该异常拒绝
如果从catch
处理程序返回错误,Promise.all
可能返回一个包含成功值和错误的数组。感谢您的快速响应。因此,在这种情况下,数组将包含所有解析值,除非发生其他错误(除了400
)?这是我想要的行为。不,它还将包含错误。例如,如果您发送两个请求,第一个请求失败,第二个请求成功,您将得到类似于[errorObject,responseObject]
的结果。如果要完全删除错误,只需从catch
处理程序返回undefined
或null
,然后过滤数组。感谢您的快速响应。因此,在这种情况下,数组将包含所有解析值,除非发生其他错误(除了400
)?这是我想要的行为。不,它还将包含错误。例如,如果您发送两个请求,第一个请求失败,第二个请求成功,您将得到类似于[errorObject,responseObject]
的结果。如果要完全删除错误,只需从catch
处理程序返回undefined
或null
,然后过滤数组。