2017-09-06 106 views
1

大家一个调用,

我使用的是无极收到回调从本机模块上反应本土项目,当我连接到服务器获取数据:

  • 第一,我叫行动 “LOGIN”
  • 从登录我叫行动 “GET_LIST” 接收数据后,

但是行动 “GET_LIST” 的回应,我RECE ived错误如下:阵营本地回调类型只允许从本地代码

09-06 08:48:22.117 13540-15635/? W/System.err: JNA: Callback [email protected] threw the following exception: 
09-06 08:48:22.119 13540-15635/? W/System.err: java.lang.RuntimeException: Illegal callback invocation from native module. This callback type only permits a single invocation from native code. 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.facebook.react.bridge.CallbackImpl.invoke(CallbackImpl.java:30) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.facebook.react.bridge.PromiseImpl.resolve(PromiseImpl.java:32) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.lnzekesi.SharedLibraryModule$1.function_recv_msg(SharedLibraryModule.java:213) 
09-06 08:48:22.125 13540-15635/? W/System.err: at java.lang.reflect.Method.invoke(Native Method) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:520) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:551) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.Native.invokePointer(Native Method) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.Function.invokePointer(Function.java:490) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.Function.invoke(Function.java:434) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.Function.invoke(Function.java:354) 
09-06 08:48:22.125 13540-15635/? W/System.err: at com.sun.jna.Library$Handler.invoke(Library.java:244) 
09-06 08:48:22.125 13540-15635/? W/System.err: at java.lang.reflect.Proxy.invoke(Proxy.java:393) 
09-06 08:48:22.125 13540-15635/? W/System.err: at $Proxy2.cli_wait(Unknown Source) 

这是我的回调从本机模块称为:

onMsg = new SoLib.fnCallback() { 
    public synchronized void recvMsg(Pointer cli, final Pointer msg) { 
     promise.resolve(getResponse(msg, resIndex)); 
     //always delete recv msg 
     SoLib.msgDelete(msg); 
    } 
}; 

SoLib.cliRegOnMsg(cli, onMsg); 
SoLib.cliConnect(cli); 

我希望有人能帮助我

其他信息

  • 阵营原生版本: 0.47.2
  • 平台:IOS, Android的
  • 开发操作系统:MacOS的
  • 开发工具:Android Studio中,Xcode的

回答

0

一个ReactNative无极对象,就像一个JavaScript的承诺,只能被调用一次。如果你想从本地模块向JS发送多次,你应该使用类似DeviceEventEmiter的事件模式。