【发布时间】:2020-01-11 06:03:25
【问题描述】:
如果一组 Promise 被拒绝(全部),我如何应用逻辑?
validUserIdPromise = checkValidUserId(id)
.then(() => console.log("user id")
.catch(() => console.log("not user id")
validCarIdPromise = checkValidCarId(id)
.then(() => console.log("car id")
.catch(() => console.log("not car id");
// TODO how to call this? console.log("neither user nor car");
为了扩大我的问题:是否建议使用 Promise.reject() 来控制 JavaScript 应用程序的正常流程,或者仅在出现问题时使用它?
用例:我的 nodeJs 应用程序从客户端接收 uuid,并根据匹配的资源(示例中的用户或汽车)进行响应。
【问题讨论】:
-
您是否要确定
validUserIdPromise和validCarIdPromise是否都被拒绝?如果只有一个Promise被拒绝,会发生什么? -
是的,我正在尝试确定。
-
只是我的 2 美分;如果您拒绝“未找到”但“未找到”是预期结果,我认为最好使用特殊的“未找到”值来解决。让 Promise 在意外结果上失败,这样您就可以更轻松地区分 2. 在“未找到”中解决的 Promise 可以遵循快乐路径,但意外错误可以遵循 catch 路径。这个问题应该伴随着
checkValid...函数,因为我想这就是你的问题所在。如果找不到东西,它是否应该拒绝。
标签: javascript promise control-flow