CN105739967A - 移动应用中js异步调用native的方法 - Google Patents

移动应用中js异步调用native的方法 Download PDF

Info

Publication number
CN105739967A
CN105739967A CN201610035285.1A CN201610035285A CN105739967A CN 105739967 A CN105739967 A CN 105739967A CN 201610035285 A CN201610035285 A CN 201610035285A CN 105739967 A CN105739967 A CN 105739967A
Authority
CN
China
Prior art keywords
native
back function
call back
call
public
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610035285.1A
Other languages
English (en)
Inventor
胡伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN201610035285.1A priority Critical patent/CN105739967A/zh
Publication of CN105739967A publication Critical patent/CN105739967A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及移动应用开发。本发明针对现有技术中js异步调用native原生方法过程中,native端回调js的回调函数返回结果时,如果js端传递js回调函数代码给native,让webview去执行,导致native端代码复杂并难以复用,如果js端不传js回调函数代码到native端,native又不能调用js的匿名回调函数的问题,提供一种移动应用中js异步调用native的方法,js端缓存回调函数,并建立公共回调函数,所述公共回调函数包括缓存回调函数与其对应标识之间的映射关系;其次,js端将标示传给native端;然后,native端接收传入的标识,在执行完业务逻辑后回调公共回调函数;最后,公共回调函数根据传回的标识及映射关系,获得对应的缓存回调函数,native端调用该对应的缓存回调函数,完成回调。适用于混合开发模式。

Description

移动应用中js异步调用native的方法
技术领域
本发明涉及移动应用开发,特别涉及移动应用开发中使用HTML5+Android/IOS原生功能(native功能)进行混合开发模式。
背景技术
目前,移动应用开发领域主要使用Android和IOS等技术,同一个app应用需要开发Android版本和IOS版本,但HTML5的出现,使得跨平台的开发技术开始盛行,HTML5+原生(native)的混合开发模式得到了广泛关注。而在使用混合开发模式时,js异步调用native是通过native回调js的回调函数来传递结果的,如图1所示,这就需要每个js函数提供明确的回调函数。而不同的js函数,其回调函数的功能千差万别,如果直接将回调函数传到native端,会导致native段代码变得非常复杂,难以复用和维护,而且大多数js框架及开发者习惯将回调函数定义为匿名函数,导致native端调用js回调函数的代码难以实现,如图2所示。这就需要一种机制来解决这类问题,以保证js即使使用匿名回调函数也能正确实现异步调用native方法。
发明内容
本发明所要解决的技术问题,就是提供一种移动应用中js异步调用native的方法以实现native端回调js回调函数的代码简单统一化。
本发明解决所述技术问题,采用的技术方案是,移动应用中js异步调用native的方法,包括以下步骤:
步骤1、js端缓存回调函数,并建立公共回调函数,所述公共回调函数包括缓存回调函数与其对应标识之间的映射关系;
步骤2、js端将标示传给native端;
步骤3、native端接收传入的标识,在执行完业务逻辑后回调公共回调函数;
步骤4、公共回调函数根据传回的标识及映射关系,获得对应的缓存回调函数,native端调用该对应的缓存回调函数,完成回调。
具体的,还包括以下步骤:
步骤5、完成回调后,js端根据所有标识清理掉对应的缓存回调函数。
进一步的,js端建立Map类型变量,用于缓存回调函数,还用于根据接收到的标识获得或清理标识对应的缓存回调函数。
具体的,所述步骤1中,回调函数至少为一个,并与标识一一对应。
具体的,所述步骤1中,公共回调函数的参数格式为json字符。
具体的,所述步骤4中,native端采用业务逻辑执行结果数据作为参数,调用对应的缓存回调函数,完成回调。
本发明的有益效果是:js端与native端约定在异步调用过程中,js的函数需要将其回调函数存放到map数据结构中,并将其对应的标识传给native的方法中,native方法接收传入的标示,在执行完业务逻辑后回调js的公共回调函数,并返回标示和执行的结果,该公共函数根据标示找到具体之前存放的回调函数,并以native返回的结果执行;
本发明中并不直接传给native其回调函数或其回调函数名称,而是根据某种机制,如:根据时间戳、模块名称、方法名称、成功回调或失败回调等因素生成标识值(key值),或使用uuid作为key值,生成一个key值,将回调函数按该key值存放到map数据结构中,并将该key值传给native方法;实现了让native端回调js回调函数的代码简单统一化。
附图说明
图1为本发明移动应用中js异步调用native的方法背景技术中js异步调用native功能的普通形式;
图2为本发明移动应用中js异步调用native的方法背景技术中js异步调用native功能时使用匿名回调函数导致native无法调到回调函数形式;
图3为本发明移动应用中js异步调用native的方法实施例中js异步并发调用native方法的解决方案图。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
具体实施方式
下面结合附图及实施例详细描述本发明的技术方案:
本发明针对现有技术中js异步调用native原生方法过程中,native端回调js的回调函数返回结果时,如果js端传递js回调函数代码给native,让webview去执行,导致native端代码复杂并难以复用,且不方便维护,如果js端不传js回调函数代码到native端,native又不能调用js的匿名回调函数的问题,提供一种移动应用中js异步调用native的方法,首先,js端缓存回调函数,并建立公共回调函数,所述公共回调函数包括缓存回调函数与其对应标识之间的映射关系;其次,js端将标示传给native端;然后,native端接收传入的标识,在执行完业务逻辑后回调公共回调函数;最后,公共回调函数根据传回的标识及映射关系,获得对应的缓存回调函数,native端调用该对应的缓存回调函数,完成回调。js端与native端约定在异步调用过程中,js的函数需要将其回调函数存放到map数据结构中,并将其对应的标识传给native的方法中,native方法接收传入的标示,在执行完业务逻辑后回调js的公共回调函数,并返回标示和执行的结果,该公共函数根据标示找到具体之前存放的回调函数,并以native返回的结果执行;本发明中并不直接传给native其回调函数或其回调函数名称,而是根据某种机制,如:根据时间戳、模块名称、方法名称、成功回调或失败回调等因素生成标识值(key值),或使用uuid作为key值,生成一个key值,将回调函数按该key值存放到map数据结构中,并将该key值传给native方法;实现了让native端回调js回调函数的代码简单统一化。
实施例
现有的js异步调用native原生方法中,native端回调js的回调函数返回结果时,如果js端传递js回调函数代码给native,让webview去执行,导致native端代码复杂并难以复用,且不方便维护。同时,如果js端不传js回调函数代码到native端,native又不能调用js的匿名回调函数。针对上述问题,本例提供一种新型的移动应用中js异步调用native的方法,其结构如图3所示,具体方法如下:
首先,用js端实现一个Map类型的数据结构,能够保存键值对,值可以是js的回调函数,键为回调函数的对应标识key。定义一个该Map类型的变量:callbackMap,用于缓存js端的回调函数,并能根据键来获得和删除相应的函数对象。回调函数至少为一个,并与标识一一对应可以利用key与序号进行表示,例如key1,key2,...,keyn。
可用如下示例代码实现上述方法:
然后,在js端定义如上所述的公共回调函数:commonCallback(),来接收native端的回调。公共回调函数为缓存回调函数与其对应标识之间的映射关系。commonCallback会根据传回的标示和序号,根据序号对应的标示从callbackMap中获得之前存放的具体的回调函数,并用native端传回的业务逻辑执行结果数据作为参数调用该回调函数,完成回调,然后根据所有的标示,清理掉缓存的回调函数。
其中,commonCallback的示例代码如下:
本例中,在具体的js函数中调用native方法时,并不直接传给native方法其回调函数或其回调函数名称,而是根据某种机制生成一个key值,如:根据时间戳、模块名称、方法名称、成功回调或失败回调等因素生成key值,或使用uuid作为key值等。将回调函数按该key值存放到callbackMap中,并将该key值传给native方法。
可用如下示例代码实现上述方法:
functionsomeFunction(){
varsomeKey="writeFile_s_"+newDate().getTime();//key的生成策略有具体应用开发者确定;
varotherKey="writeFile_f_"+newDate().getTime();
callbackMap.put(someKey,newFunction(){....});//回调函数实现形式和内容根据具体业务逻辑实现;
callbackMap.put(otherKey,newFunction(){....});//调用native方法(此处假设native端在webview中暴露给js的接口对象名为“Native”),将//someKey、otherKey传过去
window.Native.someNativeMethod(someKey,otherKey,otherParams);
}。
在native端,当具体的方法执行完业务逻辑后,只需调用调用js的公共回调函数:
commonCallback,将结果返回。示例代码如下:
综上所述,本发明实现了让native端回调js回调函数的代码简单统一化。

Claims (6)

1.移动应用中js异步调用native的方法,其特征在于,包括以下步骤:
步骤1、js端缓存回调函数,并建立公共回调函数,所述公共回调函数包括缓存回调函数与其对应标识之间的映射关系;
步骤2、js端将标示传给native端;
步骤3、native端接收传入的标识,在执行完业务逻辑后回调公共回调函数;
步骤4、公共回调函数根据传回的标识及映射关系,获得对应的缓存回调函数,native端调用该对应的缓存回调函数,完成回调。
2.根据权利要求1所述的移动应用中js异步调用native的方法,其特征在于,还包括以下步骤:
步骤5、完成回调后,js端根据所有标识清理掉对应的缓存回调函数。
3.根据权利要求2所述的移动应用中js异步调用native的方法,其特征在于,所述步骤1中,js端建立Map类型变量,用于缓存回调函数,还用于根据接收到的标识获得或清理标识对应的缓存回调函数。
4.根据权利要求1所述的移动应用中js异步调用native的方法,其特征在于,所述步骤1中,回调函数至少为一个,并与标识一一对应。
5.根据权利要求1所述的移动应用中js异步调用native的方法,其特征在于,所述步骤1中,公共回调函数的参数格式为json字符。
6.根据权利要求1所述的移动应用中js异步调用native的方法,其特征在于,所述步骤4中,native端采用业务逻辑执行结果数据作为参数,调用对应的缓存回调函数,完成回调。
CN201610035285.1A 2016-01-19 2016-01-19 移动应用中js异步调用native的方法 Pending CN105739967A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610035285.1A CN105739967A (zh) 2016-01-19 2016-01-19 移动应用中js异步调用native的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610035285.1A CN105739967A (zh) 2016-01-19 2016-01-19 移动应用中js异步调用native的方法

Publications (1)

Publication Number Publication Date
CN105739967A true CN105739967A (zh) 2016-07-06

Family

ID=56247465

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610035285.1A Pending CN105739967A (zh) 2016-01-19 2016-01-19 移动应用中js异步调用native的方法

Country Status (1)

Country Link
CN (1) CN105739967A (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339229A (zh) * 2016-08-31 2017-01-18 虎扑(上海)文化传播股份有限公司 一种针对移动平台的混合开发方法及系统
CN106713119A (zh) * 2016-12-13 2017-05-24 四川长虹电器股份有限公司 一种跨平台移动端实时消息通知及展示方法
CN106874519A (zh) * 2017-03-20 2017-06-20 百度在线网络技术(北京)有限公司 页面展现方法和装置
CN107133322A (zh) * 2017-05-04 2017-09-05 四川长虹电器股份有限公司 移动应用中HTML与Native交互的公共数据通道的实现方法
CN107861713A (zh) * 2017-07-25 2018-03-30 平安普惠企业管理有限公司 数据调用方法、装置及计算机可读存储介质
CN107870821A (zh) * 2016-09-26 2018-04-03 平安科技(深圳)有限公司 应用程序的跨平台调用方法及系统
CN108874620A (zh) * 2018-05-23 2018-11-23 北京五八信息技术有限公司 一种应用于app的事件监听方法、装置、设备及存储介质
CN108920218A (zh) * 2018-05-23 2018-11-30 北京五八信息技术有限公司 一种反射调用方法、装置、终端及计算机可读存储介质
CN109032612A (zh) * 2018-07-02 2018-12-18 平安科技(深圳)有限公司 混合型应用的接口调用方法、装置及计算机可读存储介质
CN109144601A (zh) * 2018-06-22 2019-01-04 北京奇艺世纪科技有限公司 在ios应用内调用函数的方法及系统
CN111258683A (zh) * 2020-01-19 2020-06-09 北京三快在线科技有限公司 检测方法、装置、计算机设备及存储介质
CN111443946A (zh) * 2020-03-09 2020-07-24 深圳市伊欧乐科技有限公司 Ios系统与页面的交互方法、系统、服务器和存储介质
CN112600786A (zh) * 2020-11-12 2021-04-02 湖南快乐阳光互动娱乐传媒有限公司 数据交互方法及装置
CN112631701A (zh) * 2020-12-22 2021-04-09 平安普惠企业管理有限公司 页面请求方法、装置、计算机设备和存储介质
CN113138766A (zh) * 2021-04-25 2021-07-20 北京房江湖科技有限公司 代码块调用方法、装置及跨平台的代码块调用系统
CN114443019A (zh) * 2020-11-03 2022-05-06 福建天泉教育科技有限公司 一种图形化编程多语言交互线程异步调用方法及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120824A1 (en) * 2001-05-03 2003-06-26 Scott Shattuck System supporting object-oriented constructs in ECMAScript
CN101692206A (zh) * 2009-08-28 2010-04-07 腾讯科技(深圳)有限公司 一种为静态回调函数添加动态参数的方法及相关实现
CN102654840A (zh) * 2011-11-30 2012-09-05 天津书生投资有限公司 一种函数回调的方法和系统
CN103995752A (zh) * 2014-06-16 2014-08-20 上海斐讯数据通信技术有限公司 模块间通知回调方法及模块交互结构
CN103995694A (zh) * 2014-03-31 2014-08-20 中邮科通信技术股份有限公司 一种具备电信能力的移动客户端浏览器控件及其调用方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120824A1 (en) * 2001-05-03 2003-06-26 Scott Shattuck System supporting object-oriented constructs in ECMAScript
CN101692206A (zh) * 2009-08-28 2010-04-07 腾讯科技(深圳)有限公司 一种为静态回调函数添加动态参数的方法及相关实现
CN102654840A (zh) * 2011-11-30 2012-09-05 天津书生投资有限公司 一种函数回调的方法和系统
CN103995694A (zh) * 2014-03-31 2014-08-20 中邮科通信技术股份有限公司 一种具备电信能力的移动客户端浏览器控件及其调用方法
CN103995752A (zh) * 2014-06-16 2014-08-20 上海斐讯数据通信技术有限公司 模块间通知回调方法及模块交互结构

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339229A (zh) * 2016-08-31 2017-01-18 虎扑(上海)文化传播股份有限公司 一种针对移动平台的混合开发方法及系统
CN107870821A (zh) * 2016-09-26 2018-04-03 平安科技(深圳)有限公司 应用程序的跨平台调用方法及系统
CN107870821B (zh) * 2016-09-26 2021-03-16 平安科技(深圳)有限公司 应用程序的跨平台调用方法及系统
CN106713119B (zh) * 2016-12-13 2019-11-05 四川长虹电器股份有限公司 一种跨平台移动端实时消息通知及展示方法
CN106713119A (zh) * 2016-12-13 2017-05-24 四川长虹电器股份有限公司 一种跨平台移动端实时消息通知及展示方法
CN106874519A (zh) * 2017-03-20 2017-06-20 百度在线网络技术(北京)有限公司 页面展现方法和装置
CN107133322A (zh) * 2017-05-04 2017-09-05 四川长虹电器股份有限公司 移动应用中HTML与Native交互的公共数据通道的实现方法
CN107861713A (zh) * 2017-07-25 2018-03-30 平安普惠企业管理有限公司 数据调用方法、装置及计算机可读存储介质
CN108874620A (zh) * 2018-05-23 2018-11-23 北京五八信息技术有限公司 一种应用于app的事件监听方法、装置、设备及存储介质
CN108920218A (zh) * 2018-05-23 2018-11-30 北京五八信息技术有限公司 一种反射调用方法、装置、终端及计算机可读存储介质
CN109144601A (zh) * 2018-06-22 2019-01-04 北京奇艺世纪科技有限公司 在ios应用内调用函数的方法及系统
CN109032612B (zh) * 2018-07-02 2022-01-28 平安科技(深圳)有限公司 混合型应用的接口调用方法、装置及计算机可读存储介质
CN109032612A (zh) * 2018-07-02 2018-12-18 平安科技(深圳)有限公司 混合型应用的接口调用方法、装置及计算机可读存储介质
CN111258683A (zh) * 2020-01-19 2020-06-09 北京三快在线科技有限公司 检测方法、装置、计算机设备及存储介质
CN111443946A (zh) * 2020-03-09 2020-07-24 深圳市伊欧乐科技有限公司 Ios系统与页面的交互方法、系统、服务器和存储介质
CN111443946B (zh) * 2020-03-09 2024-03-15 深圳市伊欧乐科技有限公司 Ios系统与页面的交互方法、系统、服务器和存储介质
CN114443019A (zh) * 2020-11-03 2022-05-06 福建天泉教育科技有限公司 一种图形化编程多语言交互线程异步调用方法及终端
CN112600786A (zh) * 2020-11-12 2021-04-02 湖南快乐阳光互动娱乐传媒有限公司 数据交互方法及装置
CN112631701A (zh) * 2020-12-22 2021-04-09 平安普惠企业管理有限公司 页面请求方法、装置、计算机设备和存储介质
CN113138766A (zh) * 2021-04-25 2021-07-20 北京房江湖科技有限公司 代码块调用方法、装置及跨平台的代码块调用系统

Similar Documents

Publication Publication Date Title
CN105739967A (zh) 移动应用中js异步调用native的方法
US10795666B1 (en) Techniques for web application updates
US11533220B2 (en) Network-assisted consensus protocol
US20180278725A1 (en) Converting a single-tenant application for multi-tenant use
EP4102351A1 (en) Secure network access device
CN112328927B (zh) 文档处理方法、装置、可读介质及电子设备
CN107018189A (zh) 迁移应用数据以及接收应用数据的方法及装置
US20140188982A1 (en) Virtual Desktop Infrastructure (VDI) Login Acceleration
US20220400124A1 (en) Network devices assisted by machine learning
US20170279871A1 (en) Inter-regional file sharing method and system
WO2019136713A1 (zh) 数据传输方法及装置
US20220138220A1 (en) Dedicated replication channels for replicating records between regions
CN109460389A (zh) 一种基于openresty的日志记录方法
CN103491120A (zh) 一种基于云存储的转移用户信息的系统和方法
CN104065613B (zh) 一种应用的离线操作数据的同步方法、系统及装置
CN111373377B (zh) 用于请求者和提供者之间的错误处理的方法和系统
CN110688233B (zh) 基于rxjs的客户端ipc通讯方法、存储介质、设备及系统
CN105636121A (zh) 一种客户端登录服务器同步数据的方法及系统
US11675584B1 (en) Visualizing dependent relationships in computer program analysis trace elements
CN111343220A (zh) 转发器、分布式文件传输方法、系统、介质及电子设备
CN111368557B (zh) 视频内容的翻译方法、装置、设备及计算机可读介质
CN110209737B (zh) 数据上报方法、平行链创建方法、设备和存储介质
US8185911B2 (en) System and method for simplification of data structure in wireless communications
CN101883130B (zh) 页面流会话信息的保存方法及装置
CN104902022B (zh) 一种分布式文件获取方法和分布式文件获取系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160706

RJ01 Rejection of invention patent application after publication