zoukankan      html  css  js  c++  java
  • nodejs setTimeout函数使用

    node.js,说简单点,基于Google V8引擎的,运行在服务器端的JavaScript。

    具有单线程、非阻塞IO、事件驱动等特性。

    学习的这几天,感受最深的还是非阻塞IO。由于采用Google V8引擎,node.js可以异步处理数据,举个最简单的例子。

    1
    2
    3
    4
    5
    6
    7
    8
    setTimeout(function(){console.log('5')},5000);
    console.log('1');
    function test(){
    setTimeout(function(){console.log('2')},1000);
    }
    test();
    console.log('3');
    setTimeout(function(){console.log('4')},2000);

    如果是阻塞IO,程序按行顺序执行,每行执行完再去执行下一行。

    运行结果为5,1,2,3,4。运行时间约为8000ms。

    node.js采用非阻塞IO,程序按顺序执行,但并不等待当前代码执行完毕,即IO不阻塞。

    1
    2
    3
    4
    5
    6
    [root@asxzy nodejs]# node test.js
    1
    3
    2
    4
    5

    运行结果为1,3,2,4,5。运行时间约为5000ms

    这就是非阻塞IO所带来的好处,永远不会产生死锁,因为它本身没有锁机制。

    同时,非阻塞IO也对变成带来的一些问题:

    过程式编程中,有很多情况下是本句代码要求先前的代码执行完毕,如要调用之前处理的数据结果、和数据库交互等。

    node.js中可以采用回调方式解决这个问题。

    比如

    1
    setTimeout(function(){console.log('5')},5000);

    在执行完5000ms的Timeout之后,调用function(){console.log(’5′)}

    很好理解了吧!!

  • 相关阅读:
    C++11学习笔记
    孙鑫MFC学习笔记20:Hook编程
    孙鑫MFC学习笔记19:动态链接库
    孙鑫MFC学习笔记18:ActiveX
    孙鑫MFC学习笔记17:进程间通信
    孙鑫MFC学习笔记16:异步套接字
    孙鑫MFC学习笔记:15多线程
    ionic2 使用slides制作滑动效果的类型选择栏
    JavaScript简明教程之Node.js
    ionic2实战-使用Chart.js
  • 原文地址:https://www.cnblogs.com/hahawgp/p/3288755.html
Copyright © 2011-2022 走看看