相关疑难解决方法(0)

同步调用异步Javascript函数

首先,这是一个非常具体的例子,它将错误的方式用于将异步调用改造成一个非常同步的代码库,该代码库有数千行,而且时间目前还没有能力对"执行"进行更改对的." 它伤害了我生命中的每一根纤维,但现实和理想往往不会啮合.我知道这很糟糕.

好的,那个方法,我怎么做到这样我可以:

function doSomething() {

  var data;

  function callBack(d) {
    data = d;
  }

  myAsynchronousCall(param1, callBack);

  // block here and return data when the callback is finished
  return data;
}
Run Code Online (Sandbox Code Playgroud)

示例(或缺少)都使用库和/或编译器,这两者对于该解决方案都不可行.我需要一个如何使其阻塞的具体示例(例如,在调用回调之前不要离开doSomething函数)不要冻结UI.如果在JS中可以做到这样的话.

javascript asynchronous

198
推荐指数
7
解决办法
23万
查看次数

Javascript和Phonegap插件之间的异步通信

所以,每个人都知道我们使一个类扩展CordovaPlugin并覆盖它 execute(),然后在JS和本机Java(用于Android)之间创建一个桥梁.我们进一步使用PluginResult将结果返回给JS.

因此,当JS向Java插件发出请求时,所有这些都会发生.我的问题是,如何异步地将结果发送回JS(以及HTML)

我不知道异步这个词是不是就在这里.问题是我想把一些东西送回JS(比如,当wifi变为启用/禁用时).

我已经研究过这个,但没有任何适合我的情况.

我试过的是 -

  • 创建了使用该类WiFi监听WifiManager事件Toast.
  • 注册接收者.
  • 最后,启用/禁用弹出WiFi时间CallbackContext,并使用callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, "Wifi Connected"))

    Toast和发送结果 与不同的消息断开连接.

MyPlugin.java

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;

...

public class MyPlugin extends CordovaPlugin {
private WifiReceiver wifiBroadcastReceiver = null;
private CallbackContext callbackContext = null;

...

    public MyPlugin() {     
        wifiBroadcastReceiver = new WifiReceiver();
    ...
    }
    ...
    public boolean execute(String action, …
Run Code Online (Sandbox Code Playgroud)

java android phonegap-plugins cordova

20
推荐指数
2
解决办法
2万
查看次数