1
我想知道我可以做這樣的事情在的await /異步和RxJS打字稿:如何鏈觀測和可無極(異步/等待,RxJS,可觀察)
async function bar(): Promise<boolean>{ ... }
function boo(): Observable<any> { ... }
function baz(): Observable<any> {
return Observable
.fromPromise(() => bar())
.map(() => boo())
}
要總結,我有多個baz流,我將在以後鏈接zip。在每個baz()中,我需要做一些異步檢查。 但沒有附加內容... Observable.fromPromise按預期工作。噓不。這就像當我訂閱流(zip(baz1(),baz2())),boo永遠不會執行。
我錯過了什麼?這個故事中的最佳做法是什麼?
編輯:
這裏是代碼的第一部分:
syncResource(urlEndpoint: string, storeCollectionKey: string): Observable<any> {
return Observable
.fromPromise(this.shouldSyncResource(urlEndpoint, storeCollectionKey))
.map((shouldUpdateResource) => {
if(!shouldUpdateResource){ return Observable.empty(); }
// here i can get "shouldUpdateResource" value
return this._Remote.get(urlEndpoint, this._getRequestOptions())
.map((response: Response) => response.json())
.map((collection) => {
collection.forEach((item) => {
this._Stores[storeCollectionKey].update(item);
});
});
});
}
這裏是第二部分:
Observable.zip(
syncResource('/poultries', 'poultriesStoreKey'),
syncResource('/buildings', 'buildingsStoreKey')
).subscribe(() => console.log('Syncing done'))
你需要傳遞的承諾'fromPromise',而不是返回一個無極的功能,請參見http:// reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-fromPromise – martin
Thx Martin,但即使當我「強制」.fromPromise(new Promise((resolve,reject)=> resolve( true))) 它不起作用,我可以在任何情況下獲得承諾的價值回報 – David
您是否訂閱從'baz()'返回的Observable? – martin