当前位置: 代码迷 >> JavaScript >> 本机消息中的回调
  详细解决方案

本机消息中的回调

热度:50   发布时间:2023-06-12 13:38:11.0

我有Java原生应用程序和Chrome扩展程序。 我的应用程序的往返行程如下:

  1. JavaScript启动对Native App的调用。
  2. 本机应用程序读取流并进行一些计算。
  3. 本机应用程序需要调用JS函数,并需要其结果用于进一步的计算。
  4. 如果本机应用程序调用JS(通过扩展名发送消息),那么会发生什么?

我知道我在调用完成后会稍后通过JS调用回调,但是如何在Java端在这里等待以返回结果? 以前我有一个Applet,曾经使用过FutureTask对象,但是您认为在这里也可以创建FutureTask吗?

非常感谢你。

当您的流程需要从JS到本机应用程序(以及返回)的多个消息时,一种简单的解决方案是包括一个事务请求和一个事务标识符,以允许不同任务的连续性。 因此,您的Java本机应用程序将不会“等待”第二条消息,而是会等待任何消息。 它仅能分辨出接收到的消息是前一条消息的延续还是新消息。

例如

  1. 从JS到本机应用程序,JSON消息可能类似于:

    {“ transaction_id”:“ 123”,“ request”:“ give_me_your_name”}

  2. 原生应用对JS的响应:

    {“ transaction_id”:“ 123”,“ response”:“ john”}

  3. JS对本机应用程序的连续请求:

    {“ transaction_id”:“ 123”,“ request”:“ do_something”}

  4. 原生应用对JS的响应:

    {“ transaction_id”:“ 123”,“ response”:“ ok”}

您的JS和本机应用程序代码将需要针对给定transaction_id的请求和响应采取相应措施。

  相关解决方案