Я использую redux-observable
вместе с isomorphic-fetch
для обработки http-запросов в моем приложении React
. Я предпочитаю эту комбинацию использованию ajax
rxjs, потому что я тестирую с помощью Jest
, который запускает тесты в Node.js
-, и хочу перехватывать HTTP-запросы с помощью nock
. См. этот связанный вопрос: Используйте выборку вместо ajax с избыточным наблюдаемым а>.
Итак, вот проблема: я получаю 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.
, потому что я не ловлю отказы от обещаний напрямую, а оставляю это на усмотрение Observable:
// 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, но не напрямую!
Любые предложения, как избежать предупреждения (и возможного будущего завершения с ненулевым кодом выхода) в этом сценарии?