回调内的调用无济于事

时间:2018-12-05 21:15:31

标签: javascript android react-native callback

我正在尝试从回调中调用另一个函数,但是即使执行了回调,它也不做任何事情。可以是什么?

这是React Native,尽管在此支付网关代码中不涉及JSX:

 var conektaApi = new Conekta();
        conektaApi.setPublicKey('key_CWraZrrnBCZ5aFP6FtYNz9w');
        conektaApi.createToken({
        cardNumber: '4242424242424242',
        name: 'Manolo Virolo',
        cvc: '111',
        expMonth: '11',
        expYear: '21',
        }, function(data){

            this.callAnotherFunction()
//I also tried anonymous function and arrow
// ()=>{ callAnotherFunction}

        }, function(){
        console.log( 'Error!' );
        })
        }

在成功的情况下,我绝不会成功执行另一个功能。在github中,您可以找到Conekta模块的js代码,这实际上是一个非常简单的代码,但是我无法推断出正在发生的事情或如何解决它。

我认为问题出在Conekta依赖项的index.js中:

Conekta module js

其中包含Conekta的index.js:

/**


* @providesModule Conekta
 */

'use strict';

// RNConekta
const RNConekta = require('react-native').NativeModules.RNConekta;
const Platform = require('react-native').Platform;

var Conekta = function() {
    this.publicKey = false;
};

/**
 * Params:
 * publicKey: String (Your testing or production Public Key)
 */
Conekta.prototype.setPublicKey = function(publicKey: String) {
    this.publicKey = publicKey;
};

/**
 * Params:
 *  info = {
 *      cardNumber: String
 *      name: String
 *      cvc: String
 *      expMonth: String
 *      expYear: String
 *  }
*/
Conekta.prototype.createToken = function(info: Object, success: Function, error:Function) {
    info.publicKey = this.publicKey;

RNConekta.createToken(info, function(response){
    if ( Platform.OS === 'android' ) {
        success( JSON.parse( response ) );
    } else {
        success( response );
    }
}, error);
};

module.exports = Conekta;

1 个答案:

答案 0 :(得分:0)

我对Conekta并不熟悉,但我认为您也需要在 function(data) 行中为错误指定参数,如下所示:

function(err, data){
    if (err) {
        console.error(err);
        return;
    }
    this.callAnotherFunction()
}