Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免使用promise-catch来控制程序?_Javascript_Promise_Angular Promise - Fatal编程技术网

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
函数中返回文件的位置