Observable<any>
döndüren bir işlev oluşturmak istiyorum, ancak döndürülen Observable
için bir değerin geçirilmesi için başka bir asenkron görev döndürmeden önce tamamlanmalıdır (bir Observable<string>
).Açısal 2 rxjs yuvalanmış Gözlemler
@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);
})
}
}
Bunun yerine GetData işleve Kimlik Doğrulama Simgesi parametresini geçme, ben GetData işlev içinde GetAuthToken işlevini yürütmek isteyen, tamamlanmasını bekleyin ve sonra yine gözlemlenebilir http dönün. Değil, GetData gözlemlenebilir aboneyi dönecekti DoIt fonksiyon komutunun
Tamamen alakasız bir soru kullanılarak da mümkündür: Neden sen sözdizimini kullanıyorsunuz: 'GetAuthToken = function() {...}' ve 'GetAuthToken() {...}' gibi herkes gibi (Bu iki yöntem tanımını biliyorum. aynı olsa da)? – martin
Use Observable.forkJoin', şunu kontrol edin: 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