
详细解释:
-
加
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
也会成功返回,表单提交可能会继续,这不符合预期。