promisify
由于历史原因, node很多接口是不支持promise的, 通常使用回调函数的做法, 我们可以使用promisify来使接口支持promise
(async()=>{
const fs = require('fs')
const { promisify } = require('util')
const readFile = promisify(rs.readFile)
const data = await readFile('./index.html')
console.log(data)
})()
node v10以后也提供promise接口了
// fs promise api node v10
const fsp = require('fs').promises
fsp.readFile('./index.html').then(data=>{
console.log(data)
})
stream
const fs = require('fs')
const rs = fs.createReadStream('./xin.jpeg')
const ws = fs.createWriteStream('./hui.jpeg')
rs.pipe(ws)
const http = require('http')
const fs = require('fs')
const server = http.createServer((request, response) => {
const { url, method, headers } = request
if (method === 'GET' && headers.accept.indexOf('image/*')) {
fs.createReadStream('.' + url).pipe(response)
}
})
server.listen(9000)
为什么不用readFile?
因为 readFile 会占用大量内存, createReadStream使用流处理文件, 占用内存比较小