Использование `Observable` вместо` $ q.all`

1

Привет, у меня есть существующий проект Angular 1.6.x, в котором я сделал что-то вроде

var defer1 = $q.defer();
        var defer2 = $q.defer();
        $http.get(refTrustUrl).then(function (res) {
            // some code here
            defer1.resolve(true)
        }, function () {
        });
        $http.get(candTrustUrl).then(function (res) {
            // some code here
            defer2.resolve(true)
        }, function () {
        });


        $q.all([defer1.promise, defer2.promise]).then(function () {
            // some code here
        })

Теперь мне нужно перенести этот проект на Angular 4/5, есть ли какая-нибудь работа в Observable чтобы соответствовать функциональности для $q.all. Примечание. Я читал о Observable.forkJoin но не получил, где я сделал что-то вроде:

 Observable.forkJoin(
  this.http.get(refTrustUrl, {responseType: 'text'}),
  this.http.get(candTrustUrl, {responseType: 'text'})
   ).subscribe(
  data=>{
    console.log(data,1)
  }
)

но это не сработало. Пожалуйста, помогите, спасибо... Я сослался на эту ссылку, чтобы forkJoin о forkJoin

Теги:
angular

1 ответ

1
Лучший ответ

Ваш код должен быть чем-то вроде этого (из предоставленной вами ссылки).

Observable.forkJoin(
    this.http.get(refTrustUrl).map((res:Response) => res.json()),
    this.http.get(candTrustUrl).map((res:Response) => res.json())
).subscribe(
  data => {
    this.refTrust = data[0]
    this.candTrust = data[1]
  },
  err => console.error(err)
);

Можете ли вы попробовать это, и если это сработает?

А также вам не нужно подписываться на поток внутри, как это.

Observable.forkJoin(
  this.http.get(refTrustUrl, {responseType: 'text'})
    .subscribe(res => {

Вы должны подписаться в конце, когда закончите со всеми преобразованиями.

  • 0
    спасибо, я понял

Ещё вопросы

Сообщество Overcoder
Наверх
Меню