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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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 AngularJS为什么在一个承诺中使用$q.all()?_Javascript_Angularjs_Promise_Angular Promise - Fatal编程技术网

Javascript AngularJS为什么在一个承诺中使用$q.all()?

Javascript AngularJS为什么在一个承诺中使用$q.all()?,javascript,angularjs,promise,angular-promise,Javascript,Angularjs,Promise,Angular Promise,我正在熟悉代码库,我到处都能看到: $q.all([promise])。然后(responseFunc) 这对我来说没有意义——我已经阅读了文档,我不知道为什么不使用下面的内容,因为这已经是一个承诺了 promise.then(responseFunc) 有什么我遗漏的吗?前者比后者有什么优势?是的,这有点奇怪,但有一点不同:responseFunc将使用结果数组而不是结果本身进行调用 这可能最好写为 promise.then(res => responseFunc([res])) 或

我正在熟悉代码库,我到处都能看到:

$q.all([promise])。然后(responseFunc)

这对我来说没有意义——我已经阅读了文档,我不知道为什么不使用下面的内容,因为这已经是一个承诺了

promise.then(responseFunc)


有什么我遗漏的吗?前者比后者有什么优势?

是的,这有点奇怪,但有一点不同:
responseFunc
将使用结果数组而不是结果本身进行调用

这可能最好写为

promise.then(res => responseFunc([res]))


好的,这是我能想到的唯一优势(基于我上面的评论)


responseFunc
是否可能与数据数组一起在其他地方使用?如果是这样,那么优点就是代码重用。或者相反,promise数组可以从另一个长度未知的数组生成,这使得所有案例使用
$q.all()
@charlietfl更简单。我同意,但我只是质疑只涉及一个promise的案例,因此故意使用
$q.all([promise])
promise.then(Array.of).then(responseFunc)
function responseFunc(arr) {
    arr.forEach(data => {
        // do stuff with data
    });
}

$q.all([promise1, promise2]).then(responseFunc);
$q.all([promise]).then(responseFunc);