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

本文共 416 字,大约阅读时间需要 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设计这块儿有改进的余地。

转载地址:http://beual.baihongyu.com/

你可能感兴趣的文章
ansible的使用
查看>>
2012年2月10日
查看>>
Linux下Web服务器应用之网站安全-https
查看>>
关于循环嵌套循环
查看>>
Scala中常见的容器 Option(选项)
查看>>
算法-蛇型矩阵
查看>>
路由交换IOS的备份与还原
查看>>
05.swift ?可选类型
查看>>
JavaSE 学习参考:方法的参数
查看>>
跟小博老师一起学习MyBatis ——MyBatis搭建运行环境
查看>>
linux ***
查看>>
豆瓣网站为什么会选择python而不是ruby
查看>>
在腾讯云服务器上体验Docker
查看>>
OpenStack Rabbit 集群实现
查看>>
我的友情链接
查看>>
mysql存储过程
查看>>
DDD(领域驱动设计)jpatable主键生成策略RBAC打造通用WEB权限
查看>>
我的友情链接
查看>>
混乱字符串的字段提取
查看>>
我的友情链接
查看>>