我想在订阅者被调用后返回事件。
git push some-remote HEAD:some-branch
上面的代码运行完美。它还返回JSON。
现在的问题是,当我在getCalendarEvents()中调用此方法时,由于函数不是无效的,我无法返回事件。因此,它应该具有返回类型。那么既然订阅是异步的,那么我将如何传递事件。
getCalendarData(){
var body = JSON.stringify({"cid": "etNG3V61LWS6Pzkeb_omuZGMVAOLd1_70tRQblVizWQ~",
"seldt":"2018-09-18"});
var headers = new HttpHeaders();
headers.append('Content-Type', 'application/json');
return this.httpClient.post(this.apiUrl, body, { headers: headers })
}
答案 0 :(得分:0)
您将需要像对待async
函数一样对待它,因为确实如此。这有两种方法:
import { Observable, Subject } from 'rxjs';
import { map } from 'rxjs/operators';
getCalendarEvents(): Observable<Array<CalendarEvent>> {
return this.getCalendarData().pipe(map((data: any) => {
// Your parsing code...
return events;
}));
}
// or:
getCalendarEvents(): Observable<Array<CalendarEvent>> {
const result: Subject<Array<CalendarEvent>> = new Subject<Array<CalendarEvent>>();
this.getCalendarData().subscribe((data: any) => {
// Your parsing code...
result.next(events);
result.complete();
});
return result;
}