以下哪项是使用$ q.all方法的正确语法?

时间:2018-03-29 07:37:19

标签: javascript angularjs

我在采访中收到了这个问题。

  

以下哪一项是使用$ q.all方法的正确语法?

•   $q.all([promise1(),promise2]]).then((values) => {
    …
});

•   $q.all("promise1", "promise2").then((values) => {
    …
});

•   $q.all({"promise1":promise1(),"promise2":promise2()}).then((values) => {
    ...
});

注意:可能有多个正确答案。

请帮助我!

1 个答案:

答案 0 :(得分:0)

第一和第三个答案是正确的。

可能会出现需要一次解决多个promise的时间,这很容易通过$ q.all()通过传入一个Array或Object的promises来实现,一旦两个都被解析就会调用.then() :

let promiseOne = $http.get('/api/todos');
let promiseTwo = $http.get('/api/comments');

// Array of Promises
$q.all([promiseOne, promiseTwo]).then(data => {
  console.log('Both promises have resolved', data);
});

// Object hash of Promises
// this is ES2015 shorthand for { promiseOne: promiseOne, promiseTwo: promiseTwo }
$q.all({
    promiseOne,
    promiseTwo
  }).then(data => {
  console.log('Both promises have resolved', data);
});