以下代码不能正常工作:
public class TestPlugin extends CordovaPlugin {
public static CallbackContext callbackContext;
class TestRun implements Runnable {
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {}
PluginResult result = new PluginResult(PluginResult.Status.OK, callbackContext.getCallbackId());
result.setKeepCallback(false);
callbackContext.sendPluginResult(result);
}
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
this.callbackContext = callbackContext;
TestRun tr = new TestRun();
new Thread(tr).start();
return true;
}
}
JS代码:
var Test = {
getBTPrinters: function(successCallback, errorCallback) {
cordova.exec(successCallback, errorCallback, "TestPlugin", "test", []);
setTimeout(function(){ cordova.exec(successCallback, errorCallback, "TestPlugin", "test", []); }, 30000);
}
}
当我第一次从 TestPlugin 调用方法时,我的 Javascript 代码中的回调 onsuccess 没有被调用。
当我第二次从这个插件调用方法时,我从第一次调用中得到 onsuccess 回调。
在第三次调用插件的方法后,我从第二次调用中得到 onsuccess 回调。
等等等等。
是Cordova/Phonegap的bug吗?
或者我以错误的方式使用了我的插件?
最佳答案
不断调用 exec 将强制处理消息。
setInterval(function () {
cordova.exec(null, null, '', '', [])
}, 200);
关于android - 无法在 Cordova 3.4 中使用异步方法。第一次调用插件方法后不调用 onsuccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23934173/