LukeDev2K
LukeDev2K
  • 发布:2022-07-18 12:30
  • 更新:2022-07-18 16:43
  • 阅读:1841

UniJSCallback 不能一直接收返回值?

分类:uni-app

正在用uniapp做原生开发,

deviceModule.initNfcDevice((ret) => {
console.log('ret', ret)
})

@UniJSMethod (uiThread = true)  
    public void initNfcDevice(final UniJSCallback callback){  
        Log.i(TAG, "init nfc device");  
        if(mUniSDKInstance != null && mUniSDKInstance.getContext() instanceof Activity) {  
            Log.i(TAG, "init nfc device start");  
            UsbNFCDeviceManager.getInst().init(mUniSDKInstance.getContext(), new UsbNFCDeviceManager.UsbNFCCallback() {  
                @Override  
                public void callbackNoDevice() {  
                    Log.i(TAG, "callbackNoDevice");  
                }  

                @Override  
                public void callbackDeviceName(String name) {  
                    Log.i(TAG, "callbackDeviceName " + name);  
                }  

                @Override  
                public void callbackCardid(String cardid) {  
                    Log.i(TAG, "callbackCardid " + cardid);  
                    if (callback != null) {  
                        JSONObject data = new JSONObject();  
                        data.put("status", "success");  
                        data.put("cardid", cardid);  
                        Log.e(TAG, "invoke call back");  
                        callback.invoke(data);  
                    }  
                }  

                @Override  
                public void callbackCardMessage(String message) {  
                    Log.i(TAG, "callbackCardMessage " + message);  
                }  

                @Override  
                public void callbackCardTakeaway(String cardid) {  
                    Log.i(TAG, "callbackCardTakeaway " + cardid);  
                    if (callback != null) {  
                        JSONObject data = new JSONObject();  
                        data.put("status", "leave");  
                        data.put("cardid", cardid);  
                        callback.invoke(data);  
                    }  
                }  

                @Override  
                public void callbackSlot(int slot) {  
                    Log.i(TAG, "callbackSlot " + slot);  
                }  

                @Override  
                public void callbackErrorMessage(String message) {  
                    Log.i(TAG, "callbackErrorMessage " + message);  
                }  

                @Override  
                public void callbackSecondContent(String content) {  
                    Log.i(TAG, "callbackSecondContent");  
                }  

                @Override  
                public void callbackClearSecondContent() {  
                    Log.i(TAG, "callbackClearSecondContent");  
                }  
            });  
        }  
    }

在安卓端callbackCardid这个回调是可能多次执行的,但是在uniapp这边只收到一次,uniapp不能接收多次回调吗

2022-07-18 12:30 负责人:无 分享
已邀请:
老醒

老醒

不能调用invoke方法,用invokeAndKeepAlive方法,另外把callback对象赋值到属性暂存起来

JSCallback结果回调

  • 北极大尾巴狼

    为啥我这个方法只能调用一次呢,返回的值也是全局的public

    2022-08-19 13:43

要回复问题请先登录注册