Извините, что поставил это в ответ, это просто много кода, так что ...
но вы можете вернуть Observable и подписаться на него
public getCurrentStudyPeriodPromise(schoolId: number): Observable<any> {
const data = { '$type': 'ReadRequest', 'query': 'getCurrentStudyPeriod', 'parameters': {'school': schoolId} };
return this.http.post('', data);
}
private initializePeriod(profile: Profile): Observable<any> {
return this.educationPeriod.getCurrentStudyPeriodPromise(profile.organization.id);
}
Тогда вызов метода будет
this.subscription = this.initializePeriod(profile)
.subscribe((currentPeriod) => {
console.log(currentPeriod);
});
return this.subscription
Единственное, что вам действительно нужно, чтобы убедиться и отказаться от подписки, так что позже в хук жизненного цикла ngOnDestroy вы можете поставить
this.subcrption.unsubscribe();
Я знаю, что это не обещание, поэтому, возможно, это не тот путь, по которому вы хотите идти, но это вариант.
EDIT:
Если вам нужно объединить запросы в цепочку, вы можете сделать что-то вроде этого, в этом примере я «создаю профиль», затем звоню, чтобы получить только что созданный профиль.
onChainingRequests(): Observable<any> {
return this.http.post('profile/create', profile).pipe(
switchMap(createdProfileData => this.http.get(`getProfile?profileId=${createdProfileData.id}`));
)
}
В этом сценарии, когда вы вызываете первый http, вы используете метод наблюдаемого канала rxjs, затем http.post возвращает данные, которые он передаст в качестве параметра в метод switchMap (импортированный из 'rxjs / operator'), метод switchMap затем возвращает второй вызов http.get.
В результате, когда вы вызываете onChainingRequests (), возвращаемые данные - это то, что возвращается из второго http-запроса.