これまでのところ、epic のパターンは「アクション イン、アクション アウト」です。
私は MeteorJS を使用しています。Meteor メソッドを呼び出してサーバーと対話するという規則に従う必要があります。
次のようになります。
Meteor.call("<function-name>", ...args, callback)
だから私は次のような叙事詩で非同期の副作用を処理しようとします:
completedSubscribe
単なるアクション作成者です:const completedSubscribe = result => {type: SUCCEED, result}
import { Observable } from 'rx'
const fromMeteorCall = Observable.fromNodeCallback(Meteor.call)
const subscriptionsEpic = action$ =>
action$.ofType(REQUEST_SUBSCRIBE)
.mergeMap(action => {
const call$ = fromMeteorCall('subscriptions.insert', action.email)
return call$.map(completedSubscribe)
})
次に、エラーが発生しました:Uncaught TypeError: unknown type returned
私が実際にアクションを返すことを確実にするために、
subscribe を呼び出そうとします:
call$.subscribe(
function (x) { console.log('onNext: success!'); },
function (e) { console.log('onError: %s', e); },
function () { console.log('onCompleted'); }
);
その後、サブスクライブは完全に機能し、
しかし、叙事詩はまだ機能せず、Uncaught TypeError: unknown type returned
.
MeteorJS のメソッドの問題ではなく、コールバックから作成された他のオブザーバブルで発生した可能性があると思います。
redux-observable
またはについて何か誤解していたかもしれませんがrxjs
、どんな意見でも非常に役に立ちます。