Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Native:本机模块不返回任何内容_Javascript_Android_React Native_Node Modules - Fatal编程技术网

Javascript React Native:本机模块不返回任何内容

Javascript React Native:本机模块不返回任何内容,javascript,android,react-native,node-modules,Javascript,Android,React Native,Node Modules,我对React Native是新手,我想调用Native模块从Android获取一些字符串。我这样写代码: @ReactMethod public String getToken() { String token = ""; //then take the token Log.i("getToken:", token); return token; } 然后在js中使用 var tokenString = thismodule.getToken(); 但是,当

我对React Native是新手,我想调用Native模块从Android获取一些字符串。我这样写代码:

@ReactMethod
public String getToken() {
    String token = "";
    //then take the token
    Log.i("getToken:", token);
    return token;
}
然后在js中使用

var tokenString = thismodule.getToken();
但是,当我在js中调用该方法时。我可以在logcat中看到正确的日志“I/getToken:Pala”,但是js什么也看不到


那么,正确的代码是什么呢?

哦,是的。我应该知道。js和本机之间的通信是异步的。连接到本机方法的js方法现在无法返回任何内容。因此,我们必须向native发送一个回调函数,并在回调中得到正确的答案


仅此而已。

根据react文档

要向JavaScript公开方法,必须使用@ReactMethod对Java方法进行注释。桥接方法的返回类型始终为void。React-Native网桥是异步的,因此将结果传递给JavaScript的唯一方法是使用回调或发出事件

@ReactMethod
public void getToken(Callback callback) {
    String token = "";
    //then take the token
    Log.i("getToken:", token);
    callback.invoke(token);
}

thismodule.getToken((token) => {
  console.log('Result ',token);
 }
);

你能举个例子说明我们如何做到这一点吗?