博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
360桌面JSAPI一个诡异的bug:客户端与网页通过js通信
阅读量:6007 次
发布时间:2019-06-20

本文共 518 字,大约阅读时间需要 1 分钟。

bug情景大概是这样的:

桌面.exe 内嵌一个网页.html,网页通过js调用桌面的js api接口函数fn1,然后接着调用js api函数fn2。结果fn1执行正常,但是随后的fn2死活不执行。

后来经同事调试,用setTimeout解决了问题。

setTimeout(
function
(){
   
window.external.fn2();
},0);

 既然要用到setTimeout来重新安排一个events loop,那么可以肯定fn1和fn2同时调用的时候冲突了。后来想了下bug产生的原因应该是这样的:

页面里的js调用fn1发送通知给桌面.exe,桌面.exe会处于“忙”的状态,这时候就忽略掉js发来的其他通知,表现为fn2未执行。

完美的设计应该回调形式,但是现在桌面.exe给的js api是非回调+阻塞式。桌面客户端接受js发来的通知,起码要支持异步/排队,所以360桌面的js api设计这块儿有改进的余地。

本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/archive/2012/09/20/2695215.html,如需转载请自行联系原作者。

你可能感兴趣的文章
hdu 1024 Max Sum Plus Plus 小白都可以看得懂的解析
查看>>
shell中常见参数及判断命令
查看>>
VMware Horizon View 7.5 虚拟桌面实施咨询与购买--软件硬件解决方案
查看>>
2018新版驾照驾照psd模板下载
查看>>
【矢量图控件教程】矢量图控件VectorDraw 常见问题整理大全(一)
查看>>
文件系统、服务、防火墙、SELINUX——安全四大金刚
查看>>
RabbitMQ如何保证队列里的消息99.99%被消费?
查看>>
Lync Server 2010的部署系列_第五章 准备 Active Directory 域服务
查看>>
java基本数据类型及运算符小结
查看>>
第一周博客作业
查看>>
Python strip lstrip rstrip使用方法
查看>>
Linux开发工具_1_gcc入门(上)
查看>>
在这里安家了
查看>>
ERP项目更应授人以渔
查看>>
我的友情链接
查看>>
thinkpython2
查看>>
JDK、JRE和JVM的关系
查看>>
String、StringBuffer和StringBuilder的区别
查看>>
【原创】ObjectARX中的代理对象
查看>>
.net中验证码的几种常用方法
查看>>