Подождите 2 метода для завершения Angular 6 - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть два метода, которые возвращают два разных массива с использованием запросов REST, предоставленных в логике сервисов:

 cartItemNodes: TreeNode[] = [];
 cartGroupNodes: TreeNode[] = [];

 getCartItems(){
  //subscribe to service observable filling the array 
  return this.cartItemNodes;
}

 getCartGroups(){
  //subscribe to service observable filling the array 
  return this.cartGroupNodes;
}

Как я могу построить третий метод

getCartFinalNodes ()

который ждет, пока первые два не будут завершены, а затем объединяет их результаты в один массив?

getCartFinalNodes(){
//wait for first 2 methods
return this.cartItemNodes.concat(this.cartGroupNodes);
}

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Использование Promise API:

getCartItems() {
    return new Promise((resolve, reject) => {
        resolve(this.cartItemNodes);
    });
}

getCartGroups() {
    return new Promise((resolve, reject) => {
        resolve(this.cartGroupNodes);
    });
}

Promise.all([
    this.getCartItems(),
    this.getCartGroups(),
    ]).then(value => this.getCartFinalNodes());
0 голосов
/ 03 сентября 2018

сначала верните обещания от ваших двух методов, затем используйте Promise.all, как следует

  Promise.all([
   firstMethod(key1),
   seondMethod(key2),
  ]).then(value => thirdMethod());
...