当前位置: 首页 > Web前端 > HTML

使用APICloud开发App的性能优化探索——合理使用同步-异步接口

时间:2023-04-02 23:57:48 HTML

探索使用API??Cloud开发App的性能优化——同步/异步接口的合理使用很好的体验。标准JavaScript的执行分为两种模式:同步和异步。APICloud的所有扩展API也都支持同步或异步调用,适用于不同的场景。在浏览器引擎中,JavaScript引擎是单线程执行的,也就是说同一时间JavaScript引擎只能执行一段代码。因此,JavaScript函数是在栈上一个一个执行的。如果A函数依赖于B函数的返回结果,那么A函数必须同步等待B函数返回的结果才能执行。JavaScript的同步方式符合开发者通常的编码习惯,但性能问题也因此而生。当函数栈中的某个函数执行时间过长时,会导致函数栈后面的所有函数都延迟执行,造成程序性能下降。问题。这在优先考虑移动终端体验场景的场景下是不能接受的。于是异步模式诞生了。APICloud的所有扩展API都在现有JavaScript同步模式的基础上,引入了JavaScriptCMD(CommonModuleDefinition)模块化定义规范。API调用遵循AMD(AsynchronousModuleDefinition)的异步加载。下的JavaScript异步加载方式,可以很好的解决性能问题。APICloud的JavaScript异步编程模型可以概括为三个关键词:回调函数、事件监听器、require。典型的代码用法如下:当调用fs模块的read函数时,会进入对应的原生Android和ios系统层操作,会在原生子线程中??执行文件读取操作。当操作完成时,JavaScript将被回调。这样做的好处是App不会因为读取文件大小的耗时不同而被阻塞。如果此时设备正在渲染UI,就会出现“卡死”的问题。上述代码日志输出顺序为:console.log('readFileisexecuted....');//经过一定时间后,由于文件大小不同,耗时不同console.log('printFilecontent:'+文本);异步模式可以让App的逻辑功能和UIRendering很好的解耦,耗时的操作多线程执行,充分利用设备的硬件性能,让App更专注于渲染并为用户提供更好的视觉效果和响应速度。在APP开发过程中,可以根据不同的操作场景,将同步操作和异步操作合理组合,编写出结构更合理、性能更好、维护更方便的JavaScript代码。在APICloud的扩展API中,通过传入sync参数来声明支持同步操作的api对象接口;支持同步操作的模块接口以Sync结尾。(1)使用同步接口获取App缓存大小。相关API调用方法代码如下://同步调用函数sycacheSize(){varsize=api.getCacheSize({sync:true});alert('缓存大小为:'+size+'byte');}//异步调用函数aycacheSize(){api.getCacheSize(function(ret){varsize=ret.size;alert('缓存大小为:'+size+'byte');});}(2)使用同步接口判断preference设置,代码如下//同步调用函数isLoginSyc(){varLogin=api.getPrefs({sync:true,key:'is_login'});alert('登录状态:'+login);}//异步调用functionisLoginAyc(){api.getPrefs({key:'is_login'},isLoginCallback);}functionisLoginCallback(ret){varlogin=ret.value;alert('登录状态:'+login);}