什麼是Promise.resolve()
(解決沒有任何價值很重要)?RxJS相當於Promise.resolve()
這裏有一個類似的問題:rxjs alternative to doing a Promise.resolve?。
給出的解決方案(Observable.of(data)
)效果很好,如果我們提供的任何數據,但如果我們不提供一個值意義,我因爲沒有價值,所以.subscribe()
不會觸發這不起作用。
在ionic2應用程序的Angular2服務中,我試圖將基於Promise的服務遷移到Observables。如果設備處於脫機狀態,則需要跳過序列中的某些步驟。有了承諾,我被扔的錯誤,後來趕上它的順序:
return this.connectivityService.isOnline()
.flatMap((isOnline: boolean) => {
if (isOnline) {
return Promise.resolve(); // work as expected, subscribe() is called
} else {
return Observable.throw(new OfflineError('The device is offline.'));
}
})
.do(() => console.log('Do things here'));
下面的代碼不會:
return this.connectivityService.isOnline()
.flatMap((isOnline: boolean) => {
if (isOnline) {
return Observable.of(); // subscribe() is not called
} else {
return Observable.throw(new OfflineError('The device is offline.'));
}
})
.do(() => console.log('Do things here'));
是否有可能實現與觀測是一回事嗎?隨意告訴我,如果我對可觀察量的使用不好,這對我來說是新的。
嘗試返回虛擬數據:'返回Observable.of(1);' –
@TiepPhan返回'Observable.of(1)'可以工作,但是imho,這比一個可行的解決方案更加黑客。 – bgondy
'Observable.of(undefined)'是完全相同的。 – estus