Итак, у меня есть следующее:
const getAllData = Observable.create( () => {
console.log(Date.now() + ' - Calling getallcontenttypes');
this.getAllContentTypes();
console.log(Date.now() + ' - Calling getalltaxonomysitecolumns');
this.getAllTaxonomySiteColumns();
});
getAllData.subscribe( () => {
console.log(Date.now() + ' - Subscribed, data loaded, calling router...');
this.router.navigateByUrl('/contenttype');
});
Функции внутри моего const getAllData работают, получают данные и обрабатывают их (с дополнительными журналами консоли, поэтому я знаю, что есть значения, и они выполняются через эти функции).
Что я хочу сделать сейчас, когда все мои функции (на данный момент 2) в моем getAllData завершат получение и обработку всех данных, я хочу перенаправить в другое представление.Эти 2 функции (getall ...) теперь возвращают void.Это все внутри моего ngOnInit ().
Но пока что кажется, что .subscribe () не срабатывает, или, может быть, я делаю это неправильно.Кто-нибудь может увидеть в чем проблема?
Например, вот функция getAllContentTypes:
public getAllContentTypes() {
const jsonStringified = JSON.stringify(json);
this.contentTypeService.getAllContentTypes(jsonStringified).pipe(
operators.tap(res => this.convertJsonResultToArrayCT(res)))
.subscribe(res2 => this.storeInSessionStorage(res2, 'ContentTypes'));
}
public storeInSessionStorage(res: any, key: string) {
sessionStorage.setItem(key, JSON.stringify(this.contentTypeArray));
console.log(Date.now() + ' - Stored in sessionstorage: ' + key);
}
А вот изображение того, что я получаю в своей консоли: https://imgur.com/a/xQhaqjv.
РЕДАКТИРОВАТЬ:
ОК. Итак, я изменил свои функции, чтобы они возвращали Observables:
public getAllContentTypes(): Observable<ContentType> {
const jsonStringified = JSON.stringify(json);
this.contentTypeService.getAllContentTypes(jsonStringified).pipe(
operators.tap(res => this.convertJsonResultToArrayCT(res)))
.subscribe(res2 => this.storeInSessionStorage(res2, 'ContentTypes'));
return from(this.contentTypeArray);
}
Я также отредактировал свой код следующим образом:
const test = forkJoin(
this.getAllContentTypes(),
this.getAllTaxonomySiteColumns()
).subscribe( () => {
console.log(Date.now() + ' - Subscribed, data loaded, calling router...');
this.router.navigateByUrl('/contenttype');
});
Но подписка не сработала.