big*_*ato 5 rxjs redux-observable
我试图通过应用程序购买来连接我的应用程序: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();
}
});
});
};
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何写出内容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()));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |