作家
登录

JS高级程序设计高级技巧

作者: 来源: 2017-09-05 09:19:53 阅读 我要评论

 = Date.now(); 
  •     while(Date.now() - begin < 20); 
  • function fun1() { 
  •     let fun3 = () => act("fun3"); 
  •     setTimeout(fun3, 0); 
  •     act("fun1"); 
  • function fun2() { 
  •     act("fun2 - 1"); 
  •     var fun4 = () => act("fun4"); 
  •     setInterval(fun4, 20); 
  •     act("fun2 - 2"); 
  • 当使悠揭捉?格模式将会抛异常:

    JS高等法度榜样设计高等技能

    (2)Object.freeze冻结对象

    这个是不克不及改属性值,如下图所示:

    JS高等法度榜样设计高等技能

    (3)defineProperty冻结单个属性

    如下图所示,设置enumable/writable为false,那么这个属性将弗成遍历和写:

    JS高等法度榜样设计高等技能

    6. 准时器

    怎么实现一个JS版的sleep函数?因为在C/C++/Java等说话是有sleep函数,然则JS没有。sleep函数的感化是让线程进入休眠,当到了指准时光后再从新唤起。你不克不及写个while轮回然后赓续地断定当前时光和开端时光的差值是不是到了指准时光了,因为如许会占用CPU,就不是休眠了。

    这个实现比较简单,我们可以应用setTimeout + 回调:

    1. function sleep(millionSeconds, callback) { 
    2.     setTimeout(callback, millionSeconds); 
    3. // sleep 2秒 
    4. sleep(2000, () => console.log("sleep recover")); 

    然则应用回调让我的代码不克不及够和平常的代码一样像瀑布流一样写下来,我得搞一个回调函数算作参数传值。于是想到了Promise,如今用Promise改写一下:

    1. function sleep(millionSeconds) { 
    2.     return new Promise(resolve =>  
    3.                              setTimeout(resolve, millionSeconds)); 
    4. sleep(2000).then(() => console.log("sleep recover")); 

    但似乎照样没有办法解决膳绫擎的问题,仍然须要传递一个函数参数。

    固然应用Promise本质上是一样的,然则它有一个resolve的参数,便利你告诉它什么时刻异步停止,然后它就可以履行then了,特别是在回调比较复杂的时刻,应用Promise照样会加倍的便利。

    1. function sleep(millionSeconds) { 
    2.     return new Promise(resolve =>  
    3.                            setTimeout(resolve, millionSeconds)); 

        推荐阅读

        为了合成让人类听懂的语音,机器做了哪些“深度学习”?

      深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读


      本文标题:JS高级程序设计高级技巧

      地址:http://www.17bianji.com/lsqh/37133.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)