美文网首页
Node - 模块与异步

Node - 模块与异步

作者: 酷热summer | 来源:发表于2020-05-08 16:55 被阅读0次

    1、模块

    • File System: 操作系统文件的 API
    • Net : 可以使用操作系统的网络
    • Process: 记载 Nodejs 进程的一些信息
    • OS : 跟操作系统相关的一些 API
      • os.arch():表示操作系统的架构,如 32位、64位
      • os.cpus():获取当前设备的 CPU 信息

    2、异步: 非阻塞 I/O

    • I/O: Input/Output,一个系统的输入和输出
    • 阻塞 I/O 和非阻塞 I/O 的区别在于系统接收输入再到输出的期间,能不能接收其他输入
    const glob = require('glob');
    
    let result = null;
    let result2 = null;
    
    console.time('glob');
    result = glob.sync(__dirname + "/**/**");  
    console.timeEnd('glob');        // 阻塞模式,执行完耗时14.778ms
    
    
    console.time('glob1');
    glob(__dirname + "/**/**", function (err, res) {
      result = res;
      console.log(result);
    })
    console.timeEnd('glob1');      // 非阻塞式,执行完耗时 2.963ms
    
    

    3、异步: callback

    • 回调函数格式规范:
      • error - first callback
      • Node - style callback
    • 第一个参数是 error,后面的参数才是结果

    4、异步: 事件循环

    事件循环是 nodejs 实现非阻塞 I/O 的关键。

    5、异步: Promise

    5.1 定义

    • 当前事件循环得不到的结果,但未来的事件循环会给出结果
    • 是一个状态机制
      • pending
      • fullfilled/resolved
      • rejected

    5.2 then 和 catch

    • resolved 状态的 Promise 会回调后面第一个 .then()
    • rejected 状态的 Promise 会回调后面第一个 .catch()
    • 任何一个 rejected 状态且后面没有 .catch 的 Promise ,都会造成浏览器 / node 环境的全局错误
    • .then() 和 .catch() 会返回一个全新的 Promise,该 Promise 的最终状态根据 then 和 catch 的回调函数的执行结果决定
      • 如果回调函数的最终是 throw,该 Promise 是 rejected 状态
      • 如果回调函数的最终是 return,该 Promise 是 resolved 状态
      • 如果回调函数最终返回了一个 Promise,该 Promise 会和回调函数 return 的 Promise 状态保持一致

    如果出现多个并发请求的时候,可以使用:

     Promise.all([promise1, promise2])
    .then(()=> {})
    .catch(err=> {
      console.log(err);        //  此处只会捕获第一个抛出的异常
    })
    

    6、异步: async/await

    相关文章

      网友评论

          本文标题:Node - 模块与异步

          本文链接:https://www.haomeiwen.com/subject/vcbtnhtx.html