2017-09-06 90 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的事件模式。