Javascript 如何避免使用promise-catch来控制程序?
一段代码:Javascript 如何避免使用promise-catch来控制程序?,javascript,promise,angular-promise,Javascript,Promise,Angular Promise,一段代码: // file defined here. return getFile.then(function _gotFile(file) { // getFile is a promise, resolved OR rejected // A // do something on file return file; }) .catch(function() { // B // do other things on file, return file
// file defined here.
return getFile.then(function _gotFile(file) { // getFile is a promise, resolved OR rejected
// A
// do something on file
return file;
})
.catch(function() {
// B
// do other things on file,
return file;
})
在上面的代码段中,我使用promise catch
来控制程序流:如果getFile
promise已解决,则执行A
,否则执行B
编写这样的代码是一种好的做法吗
如何重写上述代码以避免这种情况?谢谢
如果getFile
promise已解决,则执行A,否则执行B
事实上,不。当A失败时,它也做B。如果你真的想要“其他”,那么你就可以。另见
编写这样的代码是一种好的做法吗
是的,也不是。这要看情况而定
在例外情况下,做出控制流决策是完全正常的。如果某件事失败了,处理错误肯定是一个很好的做法
另一方面,您可以过度使用异常。有时,通过实现案例返回布尔值或结果类型枚举或类似内容,并使用if
/else
对其进行区分会简单得多
此外,当您使用异常/拒绝时,您需要小心并正确使用它们。JS只有
catch
-all,没有条件异常,手工操作很麻烦。尽管如此,通常是一种很好的做法,只捕获您实际能够处理的特定类型的错误,并重新引用其他错误。请看一个例子。是的,这是您应该做的。您在然后和catch
函数中返回文件的位置