處理`UnhandledPromiseRejectionWarning`我正在使用redux-observable
和isomorphic-fetch
來處理我的React
應用中的http請求。我贊成使用rxjs'ajax
這個組合,因爲我使用Jest
進行測試 - 它運行Node.js
中的測試 - 並且想要用nock
攔截http請求。看到這個相關的問題:Use fetch instead of ajax with redux-observable。如何使用Observable.from(<Promise>)和捕獲錯誤Observable
所以這裏的問題是:我得到一個UnhandledPromiseRejectionWarning
連同一個可怕:DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
,因爲我並沒有直接抓住我的承諾拒絕,而是留給了可觀察:
// apiModule.js
import fetch from 'isomorphic-fetch'
const api = {
getSomething:() => {
const request = fetch('http://some-api/')
.then(res => catchError(res)) // throwing an Error here if not response.ok
.then(res => res.json())
return Observable.from(request)
}
}
然後在史詩:
// myReduxModule.js
import {api} from './apiModule.js'
const getSomethingEpic = action$ =>
action$
.ofType(GET_SOMETHING)
.mergeMap(action =>
api
.getSomething()
.map(response => getSomethingSucceeded(response))
.catch(error => logError(error)) // error is handled here!
)
所以承諾拒絕在Observable中處理,但不是直接處理!
任何建議如何避免在這種情況下的警告(和可能的將來終止與非零退出代碼)?