Javascript: Как вызвать функцию многообещающего параллельно с использованием наблюдаемой? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть несколько функций обещания:

function test1(){
     const numberPromise = new Promise((resolve) => {
          resolve(1);
     });
     return numberPromise;
}

function test2(){
     const numberPromise = new Promise((resolve) => {
          resolve(2);
     });
     return numberPromise;
}

function test3(){
      const numberPromise = new Promise((resolve) => {
          resolve(3);
      });
      return numberPromise;
}

Я хочу назвать это параллельно, как Promise.all([test1(),test2(),test3()]), но я не хочу использовать обещание, я хочу использовать Observable .

Чтобы сделать это, я делаю это:

import { Observable } from 'rxjs/Observable';
var data=Observable.of(test1(),test2(),test3());
    data.subscribe((data)=>{
            console.log("data :",data);
})

Но я получаю результат как: enter image description here

Но я хочу получить это как:

data :1
data :2
data :3



  [1]: https://i.stack.imgur.com/0wamC.png

1 Ответ

4 голосов
/ 10 июня 2019

Попробуйте использовать forkjoin

const example = forkJoin(
  //emit 'Hello' immediately
  of('Hello'),
  //emit 'World' after 1 second
  of('World').pipe(delay(1000)),
  //emit 0 after 1 second
  interval(1000).pipe(take(1)),
  //emit 0...1 in 1 second interval
  interval(1000).pipe(take(2)),
  //promise that resolves to 'Promise Resolved' after 5 seconds
  myPromise('RESULT')
);
//output: ["Hello", "World", 0, 1, "Promise Resolved: RESULT"]
const subscribe = example.subscribe(val => console.log(val));

Пример здесь .

...