2017-04-02 7 views
5

मैं इस का उपयोग करके ऐप खरीद में साथ मेरे एप्लिकेशन को हुक करने की कोशिश कर रहा हूँ: अगर यह विफल https://github.com/chirag04/react-native-in-app-utilsरेडक्स ऑब्जर्वेबल/आरएक्सजेएस: महाकाव्य कैसे बनाया जाए जो अलग-अलग कार्रवाइयों को/if के आधार पर देता है?

मैं एक महाकाव्य है जहाँ मैं सफलता का उत्सर्जन करता है, तो यह सफल होता है चाहते हैं, और विफलता है। कुछ इस तरह:

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 की सामग्री लिखने के लिए नहीं कर रहा हूँ। क्या इसे करने का कोई तरीका है?

उत्तर

2

InAppUtils.purchaseProduct एक नोड-शैली कॉलबैक का उपयोग करने के लिए प्रतीत होता है। एक आरएक्सजेएस स्थैतिक विधि है जिसका उपयोग ऐसे एपीआई कॉल से देखने योग्य बनाने के लिए किया जा सकता है: 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())); 
}); 
+1

आप बाध्य() 'के सामने एक' return' जोड़ने के लिए '' क्योंकि mergeMap' एक वापसी मान के रूप में एक नमूदार उम्मीद की जरूरत है की तरह कुछ करने के लिए सक्षम होना चाहिए इसके कॉलबैक में :) –

+0

@ सेबेस्टियन वेल ने देखा। धन्यवाद। – cartant

संबंधित मुद्दे