对回调地狱和Promise理解

对回调地狱和Promise理解

1.什么是回调地狱,为什么要用回调地狱

fs.readFile('./a.txt',"UTF-8",function(err,data){
    if(err){
        throw err;
    }
    console.log(data)
})
fs.readFile('./b.txt',"UTF-8",function(err,data){
    if(err){ 
        throw err;
    }
    console.log(data)
})
fs.readFile('./c.txt',"UTF-8",function(err,data){
    if(err){ 
        throw err;
    }
    console.log(data)
})

像这样异步请求的代码,无法保证请求结果返回的先后顺序,每一次结果的顺序都可能不同,
因此若想要异步请求能够按照指定的顺序将结果返回,则就需要用回调嵌套的方式来编写代码 ->即:回调地狱

fs.readFile('./a.txt',"UTF-8",function(err,data){
    if(err){
        throw err;
    }
    console.log(data)
    fs.readFile('./b.txt',"UTF-8",function(err,data){
        if(err){

            throw err;
        }
        console.log(data)
        fs.readFile('./c.txt',"UTF-8",function(err,data){
            if(err){
    
                throw err;
            }
            console.log(data)
        })
    })
})

以上编码方式虽然可以解决异步请求结果返回先后的顺序问题,但请求嵌套得越深越不方便代码的阅读,所以ECMAScript6中新增了一个API:Promise

  • Promise的直译是承诺、保证(I promise you)
var p = new Promise(function(resolve, reject){
    //做一些异步操作
    setTimeout(function(){
        console.log('执行完成');
        resolve('随便什么数据');
    }, 2000);
});

Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolvereject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。

在这里插入图片描述

附赠阅读:
promise详细解读,
大白话说promise

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值