Promise 是 如何解决地狱回调的问题

Promise的好处

  1. 通过使用Promise封装函数,将嵌套函数 转为 链式调用。
  2. 有异常穿透,可以一次捕捉上面的异常。

展示一个地狱回调的问题

 fs.readFile('./1.txt', (err, data) => {

    if (err) throw e;
    console.log(data.toString())

    fs.readFile('./2.txt', (err, data) => {

        if (err) throw e;
        console.log(data.toString())

        fs.readFile('./3.txt', (err, data) => {
            if (err) throw e;
            console.log(data.toString())
        })
    })
})


用Promise解决地狱回调


const fs = require('fs');

//用promise 封装函数
function myFS(url) {
    return new Promise((resolve, rejects) => {
        fs.readFile(url, (err, data) => {
            if (err) throw err;
            resolve(data)
        })
    })
}

//可以直接用util替代上面的写法
//const myFS= require('util').promisify(fs.readFile)


//可以看到代码的可读行有了很大的提高
myFS('./1.txt').then(data => {
    console.log(data.toString())
    return myFS('./2.txt')
}).then(data => {
    console.log(data.toString())
    return myFS('./3.txt')
}).then(data => {
    console.log(data.toString())
}).catch(err => {
    console.log(err)
})

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容