return Observable.fromPromise抛出错误

时间:2017-12-01 01:43:04

标签: redux-observable

我使用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然后谁解释这个以及它是如何工作的?

1 个答案:

答案 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]);           
  });      
);