我正在尝试从回调中调用另一个函数,但是即使执行了回调,它也不做任何事情。可以是什么?
这是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的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;
答案 0 :(得分:0)
我对Conekta并不熟悉,但我认为您也需要在 function(data)
行中为错误指定参数,如下所示:
function(err, data){
if (err) {
console.error(err);
return;
}
this.callAnotherFunction()
}