Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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承诺传播_Javascript_Angularjs_Promise_Angular Promise - Fatal编程技术网

阻止JavaScript承诺传播

阻止JavaScript承诺传播,javascript,angularjs,promise,angular-promise,Javascript,Angularjs,Promise,Angular Promise,想象一下,我有一个像下面这样的承诺链。如果调用了func2,我希望避免同时调用func3或func4 AsyncFunction() .then(func1, func2) .then(func3, func4) 现在,如果我在func2中抛出错误,就会调用func4。如果我在func2中返回一个值,则似乎调用了func3 我使用的是$q 对分支控制流使用嵌套。在您的情况下,它将如下所示: AsyncFunction().then(function(res) { return func

想象一下,我有一个像下面这样的承诺链。如果调用了func2,我希望避免同时调用func3或func4

AsyncFunction()
.then(func1, func2)
.then(func3, func4)
现在,如果我在func2中抛出错误,就会调用func4。如果我在func2中返回一个值,则似乎调用了func3


我使用的是$q

对分支控制流使用嵌套。在您的情况下,它将如下所示:

AsyncFunction().then(function(res) {
    return func1(res).then(func3, func4);
}, func2);

谢谢你的回答。你知道有没有一种不用嵌套就能解决这个问题的方法?在某些情况下,这可能会变得相当混乱。在结构化编程中,你总是使用嵌套来做分支之类的事情——考虑一个简单的<代码>如果语句。如果事情变得太复杂,将它们转移到自己的功能。