一、node.js 简介
Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的、可扩展的网络应用。Node.js采用事件驱动和非阻塞I/O模型,使其变得轻量和高效,非常适合构建运行在分布式设备的数据密集型的实时应用。
运行于浏览器的JavaScript,浏览器就是JavaScript代码的解析器,而Node.js则是服务器端JavaScript的代码解析器,存在于服务器端的JavaScript代码由Node.js来解析和运行。
JavaScript解析器只是JavaScript代码运行的一种环境,浏览器是JavaScript运行的一种环境,浏览器为JavaScript提供了操作DOM对象和window对象等的接口。Node.js也是JavaScript运行的一种环境,Node.js为JavaScript提供了操作文件、创建HTTP服务、 创建TCP/UDP服务等的接口,所以Node.js可以完成其他后台语言(Python、PHP等)能完成的工作。
二、node.js util.promisify
node util.promisify的功能是将node 模块的回调函数( fs.readFile )转成promise异步函数。
代码如下:
const fs = require('fs'); //引入fs
function promisify(arg){ //先传入要转换的fs函数
return (...args)=>{ //返回第二层函数,用来接收参数
return new Promise((reslove,reject) => { //返回promise
arg(...args,(err,data)=>{
if (err) {
reject(err)
}else {
reslove(data); //返回数据
}
})
})
}
}
const readdir = promisify(fs.readdir);//传入fs函数
(async ()=>{
const read = await readdir('./'); //传入参数并返回promise再由async/await转成同步
console.log(read); //打印数据
})()
//不使用async同理
readdir('./').then(res => {
//do something...
}).catch(err =>{
//捕获错误信息
})