JavaScript - 如何从订阅返回数据

时间:2017-11-11 15:41:18

标签: javascript

我有一个异步调用,它在完成时调用一个getStatus()函数,该函数对接收到的数据进行一些计算,然后返回计算出的数据。我正在调用load()函数,我想要计算数据。

load(case, start, end) {
  Observable.forkJoin (
    this.http.get('/workschedules'),
    this.http.get('/block?startDate=' + start + '&endDate=' + end),
    this.http.get('/filed?caseId=' + case+ '&startDate=' + start + '&endDate=' + end)
  ).subscribe(data => {
    this.works$ = data[0];
    this.block$ = data[1];
    this.avail$ = data[2];
  }, err => console.log(err), () => this.getStatus(case, 217380, start, end, 5));
}

getStatus(caseId, appId, start, end, capacity: number) {
  //some calculation on all the subscribed data
  return calculated_data;
}

我想在load()函数调用上获取数据 例如

let temp = load(12512,'22/10/2017','25/10/2017');

1 个答案:

答案 0 :(得分:0)

您无法将异步与同步内容混合在一起。

鉴于http是异步的,您的函数必须返回异步数据(将在某个时候解析)。那将是这样的:

load(...): Observable<any> {
  return Observable.forkJoin(...) // without subscribe
}

load(...).subscribe((data) => ...);