问题描述
我有Java原生应用程序和Chrome扩展程序。 我的应用程序的往返行程如下:
- JavaScript启动对Native App的调用。
- 本机应用程序读取流并进行一些计算。
- 本机应用程序需要调用JS函数,并需要其结果用于进一步的计算。
- 如果本机应用程序调用JS(通过扩展名发送消息),那么会发生什么?
我知道我在调用完成后会稍后通过JS调用回调,但是如何在Java端在这里等待以返回结果? 以前我有一个Applet,曾经使用过FutureTask对象,但是您认为在这里也可以创建FutureTask吗?
非常感谢你。
1楼
当您的流程需要从JS到本机应用程序(以及返回)的多个消息时,一种简单的解决方案是包括一个事务请求和一个事务标识符,以允许不同任务的连续性。 因此,您的Java本机应用程序将不会“等待”第二条消息,而是会等待任何消息。 它仅能分辨出接收到的消息是前一条消息的延续还是新消息。
例如
从JS到本机应用程序,JSON消息可能类似于:
{“ transaction_id”:“ 123”,“ request”:“ give_me_your_name”}
原生应用对JS的响应:
{“ transaction_id”:“ 123”,“ response”:“ john”}
JS对本机应用程序的连续请求:
{“ transaction_id”:“ 123”,“ request”:“ do_something”}
原生应用对JS的响应:
{“ transaction_id”:“ 123”,“ response”:“ ok”}
您的JS和本机应用程序代码将需要针对给定transaction_id的请求和响应采取相应措施。