Promise对象

2020-05-24  本文已影响0人  X_y_bfc1
传统读取文件的例子
利用回调函数层层嵌套  回调地狱

const fs = require('fs')
const path = require('path')


function readFileName (fileName,callback){
    const fullName = path.resolve(__dirname, './',fileName)
    fs.readFile(fullName,(error,data)=>{
        if(error){
            console.log(error)
            return
        }
        callback(JSON.parse(data.toString())) // callback中的参数为下边的 aData
    })
}

readFileName("a.json",(aData)=>{
    console.log('a',aData);
    readFileName(aData.next,(bData)=>{
        console.log('b',bData);
        readFileName(bData.next,(cData)=>{
            console.log('c',cData);
        })
    })
})
promise方式

const fs = require('fs')
const path = require('path')

function readFileName(fileName){
    const promise = new Promise((resolve,reject)=>{
        const fullName = path.resolve(__dirname,'./',fileName);
        fs.readFile(fullName,(error,data)=>{
            if(error){
                reject(error)
                return
            }
            resolve(JSON.parse(data.toString()));
        })
    })
    return promise
}

readFileName('a.json').then(aData=>{ 
//readFileName('a.json')是一个promise对象,return出的数据将then也变成一个promise对象 
    console.log('a',aData)
    return readFileName(aData.next)
}).then(bData=>{
    console.log('b',bData);
    return readFileName(bData.next);
}).then(cData=>{
    console.log(cData)
})
上一篇 下一篇

猜你喜欢

热点阅读