JavaScript异步编程中用promise读取相互关联的json文件

这篇博客探讨了JavaScript中回调地狱的问题,特别是在处理链式异步操作时的复杂性和可读性降低。通过一个读取多个JSON文件的案例,展示了传统回调函数的千层饼式调用。然后,文章介绍了Promise作为异步编程的新解决方案,如何利用Promise的then方法和catch方法实现更清晰的异步代码结构,避免回调地狱,提高代码可读性和错误管理效率。
摘要由CSDN通过智能技术生成

JavaScript异步编程中,解决回调地狱的两种方式

众所周知,在ES6推出之前,要想执行一串有前后依赖关系的异步操作需要通过纯回调函数的方式,即把外层的函数所得到的结果作为参数传入到下一层函数, 试着看这样一个例子:

案例

根目录下有一个index.js脚本(也就是我们要编写读取文件的脚本),要读取 /files 文件夹里的三个json文件,分别为:

a.json

{
   
	"next" : "b.json",
	"msg": "this is a"
}

b.json

{
   
	"next" : "b.json",
	"msg": "this is a"
}

c.json

{
   
	"next" : "null",
	"msg": "this is a"
}

可以看出这三个文件之间有着链式的关系,a.json的next属性指向b.json,同样b.json的next属性指向c.json,要异步读取这三个文件,我们可以采用下面这种方式:

千层饼回调地狱

//方案一 回调地狱读取文件
function getFileContent(filename, successCallback, errorCallback) {
   
    const fullName = path.resolve(__dirname, 'files', filename)
    fs.readFile(fullName, (err, data) => {
   
        if (err) {
   
            //把异常抛出给errorCallback回调函数
            errorCallback(err)
            return
        }
        successCallback(JSON.parse(data.toString())
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值