提问人:Gilad 提问时间:6/29/2020 更新时间:6/29/2020 访问量:981
在 JS 中,为函数返回 true/false 作为成功/失败的指标是否被认为是一个好的标准?
Is returning true/false for a function as indicator for success/failure considered a good standard in JS?
问:
我试图了解有关 JS 标准的一些内容:
在编写异步函数或任何返回任何类型 promise 的函数时,我需要假设此函数的用户希望捕获拒绝,而不是期望在解析中使用布尔值:
好:
doSomething = async () => {
...
if (failed)
reject(error)
resolve("yay")
}
try {
await doSomething()
console.log("yay worked")
}
catch (error){
}
坏:
doSomething = async () => {
...
if (failed)
resolve(false)
resolve(true)
}
didWork = await doSomething()
if (didWork){
console.log("yay")
else {
}
但我的问题是关于非异步函数的,返回 true/false 作为成功/失败的指示器是否被认为是一个坏习惯?还有其他表示成功/失败的好方法吗? 另外,告诉我我上面关于承诺的好习惯的假设在你眼中是否正确。
谢谢!
答:
1赞
deceze
6/29/2020
#1
异步和非异步函数实际上是一样的:
true
/false
可以是对所提出问题的合法回答- 异常/承诺拒绝是严重失败的标志
例如,如果函数的目的是确定字符串是否为数字,则返回值 和 具有明显的含义。但是,如果您要传入一个对象,该对象一开始就不是字符串,则例外是合适的,因为对象的“此字符串是数字吗”问题的答案是 “mu” 🤷 ♂️ 。true
false
对于异步函数也是如此:如果它需要网络请求来获得某个问题的 / 答案,那么用 / 解析 promise 是完全错误的;例如,如果您正在与服务器检查输入的用户名是否仍然可用,“是”和“否”是有效的答案。但是,如果网络请求本身失败了,那将是一个异常的失败,一个“mu”,你需要通过拒绝整个承诺来发出信号。true
false
true
false
promise 拒绝只是一个异步异常;使用语法,它甚至可以像同步异常一样处理。例外用于特殊事件,当由于超出正常快乐路径的情况而无法提供正常答案时。await
评论
findLowestNumber(array)
-Infinity
null
findLowestNumber