结论如下
以下是实测情况
脚本加载时运行,运行顺序如下:
浏览器 | 运行顺序 |
chrome18 | onload,nextScript,setTimeout |
chrome33 | onload,nextScript,setTimeout,Promise |
chrome35 | onload,nextScript,setTimeout,Promise |
chrome36 | Promise,Object.observe,Promise,onload,nextScript,setTimeout |
chrome39 | Promise,Object.observe,Promise,onload,nextScript,setTimeout |
chrome41 | Promise,Object.observe,Promise,onload,nextScript,setTimeout |
chrome43 | Promise,Object.observe,Promise,onload,nextScript,setTimeout |
chrome63 | Promise,onload,nextScript,setTimeout |
ie6 | complete,nextScript,setTimeout |
ie7 | complete,nextScript,setTimeout |
ie8 | nextScript,complete,setTimeout |
ie9 | complete,nextScript,onload,setTimeout |
ie10 | onload,nextScript,complete,setTimeout,setTimeout,setImmediate |
ie11 | onload,nextScript,setTimeout,setTimeout,setImmediate |
edge18 | onload,Promise,nextScript,setTimeout,setTimeout,setImmediate |
firefox3.6 | onload,nextScript,setTimeout |
firefox4 | onafterscriptexecute,onload,setTimeout,nextScript |
firefox7 | onafterscriptexecute,onload,setTimeout,nextScript |
firefox10 | onafterscriptexecute,onload,nextScript,setTimeout |
firefox31 | onload,nextScript,setTimeout,Promise |
firefox55 | onload,Promise,nextScript,setTimeout,setTimeout,setImmediate |
firefox57 | onload,Promise,nextScript,setTimeout,setTimeout,setImmediate |
firefox71 | Promise,onload,nextScript,setTimeout |
点击事件时运行,运行顺序如下:
浏览器 | 运行顺序 |
chrome18 | btn.onclick,body.onclick,document.onclick,setTimeout |
chrome33 | btn.onclick,body.onclick,document.onclick,Promise,setTimeout |
chrome35 | btn.onclick,body.onclick,document.onclick,Promise,setTimeout |
chrome36 | btn.onclick,Promise,Object.observe,Promise,body.onclick,document.onclick,setTimeout |
chrome39 | btn.onclick,Promise,Object.observe,Promise,body.onclick,document.onclick,setTimeout |
chrome41 | btn.onclick,Promise,Object.observe,Promise,body.onclick,document.onclick,setTimeout |
chrome43 | btn.onclick,Promise,Object.observe,Promise,body.onclick,document.onclick,setTimeout |
chrome63 | btn.onclick,Promise,body.onclick,document.onclick,setTimeout |
ie6 | btn.onclick,body.onclick,document.onclick,setTimeout |
ie7 | btn.onclick,body.onclick,document.onclick,setTimeout |
ie8 | btn.onclick,body.onclick,document.onclick,setTimeout |
ie9 | btn.onclick,body.onclick,document.onclick,setTimeout |
ie10 | btn.onclick,body.onclick,document.onclick,setImmediate,setTimeout,setTimeout |
ie11 | btn.onclick,body.onclick,document.onclick,setImmediate,setTimeout,setTimeout |
edge18 | btn.onclick,Promise,body.onclick,document.onclick,setImmediate,setTimeout,setTimeout |
firefox3.6 | btn.onclick,body.onclick,document.onclick,setTimeout |
firefox4 | btn.onclick,body.onclick,document.onclick,setTimeout |
firefox7 | btn.onclick,body.onclick,document.onclick,setTimeout |
firefox10 | btn.onclick,body.onclick,document.onclick,setTimeout |
firefox31 | btn.onclick,body.onclick,document.onclick,Promise,setTimeout |
firefox55 | btn.onclick,body.onclick,document.onclick,Promise,setTimeout |
firefox57 | btn.onclick,body.onclick,document.onclick,Promise,setTimeout |
firefox71 | btn.onclick,Promise,body.onclick,document.onclick,setTimeout |
PHP定时任务是一个非常有意思的东西,虽然说实话,用系统的php.exe去直接执行php文件的效率更高,但是对于很多普通站长而言,虚拟主机是无法做到直接php执行原生程序的。本文仅提供一些解决的思路
写这篇文章的原因是因为,这几天在看 core-js 的源码,然后发现了 queueMicrotask 的实现。由于之前做的项目,对于微任务的执行需求,一般是使用 asap 这个库来完成的,如果没有使用这个库的话
目前只有IE10+和NodeJS支持该API。立即触发回调函数,使其进入宏任务队列(macro task queue),比setTimout(fn, 0)的执行顺序要快,性能也更高。因为setTimeout(fn,0)实质上会有4ms的延迟。
在本文中,我们将研究如何在 Node 程序中创建和使用 Cron 作业。为此我们将创建一个简单的程序,该应用程序会自动从服务器中删除自动生成的 error.log 文件。 Cron 作业的另一个优点是
为什么会是这样的输出顺序呢?这就要提到事件循环、宏任务和微任务的概念了。众所周知,JavaScript是一个单线程的语言,单线程意味着代码会自上而下依次执行,如果有一个耗时的操作,那么页面就会卡死,基于此,便有了异步的概念
首先大家都知道JS是一门单线程的语言,所有的任务都是在一个线程上完成的。而我们知道,有一些像I/O,网络请求等等的操作可能会特别耗时,如果程序使用同步模式等到任务返回再继续执行,就会使得整个任务的执行特别缓慢
在语言当中,宏常见用途有实现 DSL 。通过宏,开发者可以自定义一些语言的格式,比如实现 JSX 语法。在 WASM 已经实现的今天,用其他语言来写网页其实并不是没有可能
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!