异步函数中return与catch的错误处理

详细解释:
- 加
return的情况:return createRequest(...)返回一个 Promise 链。- 当
createRequest失败时,.catch会捕获错误,并抛出新的错误。 - 由于整个 Promise 链被返回,
beforeSubmit的 Promise 会被 reject,错误会传递到调用方,从而中断后续操作。
- 不加
return的情况:createRequest(...)会启动一个 Promise 链,但未被返回。beforeSubmit函数不会等待这个 Promise 链完成,而是立即返回一个 resolved 的 Promise(因为async函数默认返回一个 resolved Promise,除非有await或return)。- 即使
.catch捕获了错误并抛出,也只是在内部的 Promise 链中处理,不会影响beforeSubmit的返回值。因此,外部调用者认为beforeSubmit成功完成,后续代码会继续执行。
总结:
- 当前代码中使用了
return createRequest(...),这是正确的做法,可以确保错误被传播并阻止后续执行。 - 如果不加
return,即使 URL 校验失败,beforeSubmit也会成功返回,表单提交可能会继续,这不符合预期。
作者:刀疤
来源:juejin.cn/post/7546105524095696947
来源:juejin.cn/post/7546105524095696947