gpt4 book ai didi

rxjs - Redux Observables/RxJS : How to make epic that returns different actions based on if/else?

转载 作者:行者123 更新时间:2023-12-04 21:07:00 30 4
gpt4 key购买 nike

我正在尝试使用以下方法将我的应用与应用内购买 Hook :https://github.com/chirag04/react-native-in-app-utils

我有一个史诗,如果成功,我想发出成功,如果失败,我想发出失败。像这样的东西:

import 'rxjs';
import { InAppUtils } from 'NativeModules';

import * as packagesActions from '../ducks/packages';
import * as subscriptionActions from '../ducks/subscription';

export default function createSubscription(action$, store) {
return action$.ofType(packagesActions.SELECT)
.mergeMap(action => {
const productId = action.payload;
InAppUtils.purchaseProduct(productId, (error, response) => {
if(response && response.productIdentifier) {
return subscriptionActions.subscribeSuccess();
} else {
return subscriptionActions.subscribeFailure();
}
});
});
};

但是我不知道如何写 mergeMap的内容.有没有办法做到这一点?

最佳答案

InAppUtils.purchaseProduct似乎使用 Node 风格的回调。有一个 RxJS 静态方法可用于从这样的 API 调用中创建可观察对象: bindNodeCallback .

在您的 mergeMap 内,你应该能够做这样的事情

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/bindNodeCallback';
import 'rxjs/add/observable/of';

...
.mergeMap(action => {
const productId = action.payload;
const bound = Observable.bindNodeCallback((callback) => InAppUtils.purchaseProduct(productId, callback));
return bound()
.map(response => subscriptionActions.subscribeSuccess())
.catch(error => Observable.of(subscriptionActions.subscribeFailure()));
});

关于rxjs - Redux Observables/RxJS : How to make epic that returns different actions based on if/else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43164594/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com