Tôi muốn tạo hàm trả về Observable<any>
nhưng trước khi trả lại tác vụ không đồng bộ khác phải hoàn thành (Observable<string>
), để giá trị được chuyển đến số Observable
trả lại.Góc 2 rxjs lồng nhau Quan sát
@Injectable()
export class MyComponent
{
GetAuthToken = function() : Observable<string>
{
return this._storageService.GetAsString('authToken');
}
GetData = function(authToken) : Observable<any>
{
let headers = new Headers();
headers.append('authToken', authToken);
var getUsers = this._http.get('/api/endpoint', { headers: headers })
.map((resonse: Response) => resonse.json()));
return getUsers;
}
DoIt = function() : Observable<any>
{
this.GetAuthToken().Subsribe(t=> {
return GetData(t);
})
}
}
Vì vậy, thay vì đi qua các tham số authToken vào chức năng GetData, tôi muốn thực hiện chức năng GetAuthToken bên trong hàm GetData, chờ đợi để hoàn thành nó, và sau đó vẫn trả lại http thể quan sát được.
Thực thi các hàm DoIt sẽ trở về thuê bao, không phải là GetData Quan sát
câu hỏi hoàn toàn không liên quan: Tại sao bạn sử dụng cú pháp: 'GetAuthToken = function() {...}' và không phải 'GetAuthToken() {...}' giống như mọi người khác (tôi biết hai định nghĩa phương thức này mặc dù không giống nhau)? – martin
Sử dụng 'Observable.forkJoin', kiểm tra điều này: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md –
@Martin http://stackoverflow.com/questions/336859/javascript-function-declaration-syntax-var-fn-function-vs-function-fn – gunwin