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 v10const fsp = require('fs').promisesfsp.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 } = requestif (method === 'GET' && headers.accept.indexOf('image/*')) {fs.createReadStream('.' + url).pipe(response)}})server.listen(9000)
为什么不用readFile?
因为 readFile 会占用大量内存, createReadStream使用流处理文件, 占用内存比较小
