Node - 模块与异步

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 - 模块与异步)