XIYUETA.COM
源代码:
点击运行
<script> //异步执行一个函数 //函数asyncRun,用于异步执行func函数 function asyncRun(func){ //判断Promise是否可用 if(typeof Promise!=='undefined'){ //如果可用,则使用Promise.resolve().then执行func函数 Promise.resolve().then(func); //判断MutationObserver是否可用 }else if(typeof MutationObserver!=='undefined'){ //如果可用,则创建一个MutationObserver实例,并使用实例的observe方法观察文本节点,并设置文本节点的内容 var ob=new MutationObserver(func); var textNode=document.createTextNode('0'); ob.observe(textNode,{characterData:true}); textNode.data='1'; //如果都不可用,则使用setTimeout执行func函数 }else{ setTimeout(func); } } asyncRun(function(){ console.log('1'); }) asyncRun(function(){ console.log('2'); }) asyncRun(function(){ console.log('3'); }) </script>
运行结果