我使用redux-observable,我的史诗有以下代码
return action$.ofType('SEARCH').mergeMap((action) =>
return Observable.fromPromise(axios.get(SEARCHURL)).map(result => {
const filteredStoresAsActions = result.data.stores.map(store => ({
type: 'SEARCH_RESULTS',
searchText: action.SearchText.toLowerCase().trim(),
store
}));
// Create the interval to emit an item every second
return Observable.interval(1000)
.take(filteredStoresAsActions.length).map(t => filteredStoresAsActions[t]);
});
);
现在,当我运行代码时,我收到以下错误
PromiseObservable.js?7552:76未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作。
我不确定为什么会抛出此错误以及如何修复它。我还有另外一个问题,如果我返回Observable.fromPromise然后谁解释这个以及它是如何工作的?
答案 0 :(得分:0)
外部.map()
应返回一个操作对象,而不是Observable。请尝试使用.concatMap()
:
return action$.ofType('SEARCH').mergeMap((action) =>
return Observable.fromPromise(axios.get(SEARCHURL)).concatMap(result => {
const filteredStoresAsActions = result.data.stores.map(store => ({
type: 'SEARCH_RESULTS',
searchText: action.SearchText.toLowerCase().trim(),
store
}));
// Create the interval to emit an item every second
return Observable.interval(1000)
.take(filteredStoresAsActions.length).map(t => filteredStoresAsActions[t]);
});
);