美文网首页
异步的处理方案

异步的处理方案

作者: 钱学敏 | 来源:发表于2018-05-28 23:43 被阅读0次

    异步处理方案的几个阶段

    const fs = require('fs')
    
    //第一阶段 回调函数
    function readFile(cb) {
        fs.readFile('./package.json', (err, data) => {
            if (err) return cb(err)
    
            cb(null, data)
        })
    }
    readFile((err, data) => {
        if (!err) {
            data = JSON.parse(data)
    
            console.log('第一阶段', data.name)
        }
    })
    
    
    //第二阶段  Promise
    
    function readFileAsync(path) {
        return new Promise((resolve, reject) => {
            fs.readFile(path, (err, data) => {
                if (err) reject(err)
                else resolve(data)
            })
        })
    }
    
    readFileAsync('./package.json').then(data => {
        data = JSON.parse(data)
    
        console.log('第二阶段', data.name)
    }).catch(err => {
        console.log(err)
    })
    
    
    //第三阶段 co + util.promisify + generator函数
    const co = require('co') //jt
    const util = require('util')
    co(function*() {
        let data = yield util.promisify(fs.readFile)('./package.json')
    
        data = JSON.parse(data)
    
        console.log('第三阶段', data.name)
    })
    
    
    
    //第四阶段 Async 
    const readAsync = util.promisify(fs.readFile)
    async function init() {
        let data = await readAsync('./package.json')
        data = JSON.parse(data)
        console.log('第四阶段', data.name)
    }
    
    init()
    

    相关文章

      网友评论

          本文标题:异步的处理方案

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