昨日,Facebook现已为谷歌的Chrome浏览器做出了第一个首要的API奉献。 Facebook与Google一同创建了一个API提案,为浏览器供给代码,这是该公司的第一个代码。这个代码就像Facebook在Web东西和规范方面的作业相同,专心于让用户体会更顺利,更方便。在这种情况下,这意味着缩短点击或按键与浏览器对此做出反响之间的时刻。
这个新系统的初次试用将在Chrome 74上推出。
通常情况下,浏览器的JavaScript引擎会处理代码的履行方法以及何时暂停,以查看是否存在需求呼应的任何待处理输入事情。因为即使是在多核机器上运转的现代JavaScript引擎依然基本上是单线程的,引擎一次只能做一件事,所以窍门是弄清楚怎么最好地将代码履行与查看输入事情相结合。
“像许多其他站相同,咱们经过将JavaScript分解为更小的块来处理这个问题。在页面加载时,咱们运转了一些JavaScript,然后咱们将操控权交还给浏览器,“Facebook团队在今日的公告中解释道。 “然后,浏览器能够查看其输入事情队列,看看是否有任何需求告知页面的内容。然后浏览器能够在增加JavaScript块时回来运转JavaScript块。“
可是,每逢浏览器阅历该循环,并查看新事情,处理它们时,会花费一些额定的时刻。你履行此操作的次数太多,加载页面的速度会变慢。可是,假如您仅以较慢的距离查看输入,则跟着浏览器需求更长时刻的呼应,用户体会会下降。
为了处理这个问题,Facebook的工程师创建了isInputPending API,然后消除了这种权衡。 Facebook还为W3C Web功能作业组供给的API答应开发人员在代码履行时查看是否有任何未决输入。
有了这个,代码仅仅查看是否有什么要做出反响,而不用彻底操控回浏览器,然后将其传递回JavaScript引擎。
现在这仅仅一个试用版 – 因为开发人员有必要将其集成到他们的代码中,因而Chrome 74发动后不会主动加快浏览器。可是,假如实验成功,开发人员可能会利用它(而Facebook肯定会自己这样做),其他浏览器供货商也会经过他们自己的引擎进行整合。
“将isInputPending引进Chrome的进程代表了一种在Facebook上开发络规范的新方法,”该团队表明。 “咱们期望持续推进新的API,并加大对开源Web浏览器的奉献。接下来,咱们能够直接将这个API构建到React的并发形式中,这样开发人员就能取得开箱即用的API优势。此外,isInputPending现在是将调度原语构建到Web中的更大尽力的一部分。“