其他分享
首页 > 其他分享> > Promise如何解决回调地狱

Promise如何解决回调地狱

作者:互联网

什么是回调地狱?

getFileByPath(path.join(__dirname, './files/1.txt'), function (data) {
    console.log(data);

    getFileByPath(path.join(__dirname, './files/2.txt'), function (data) {
        console.log(data);

        getFileByPath(path.join(__dirname, './files/3.txt'), function (data) {
            console.log(data);
        });
    });
});

关于promise:

使用ES6的promise解决回调地狱:

//创建一个Promise实例,获取数据。并把数据传递给处理函数resolve和reject。需要注意的是Promise在声明的时候就执行了。
var getUserInfo=new Promise(function(resolve,reject){
    $.ajax({
        type:"get",
        url:"index.aspx",
        success:function(data){
            if(data.Status=="1"){
                resolve(data.ResultJson)//在异步操作成功时调用
            }else{
                reject(data.ErrMsg);//在异步操作失败时调用
            }
        }
    });
})
//另一个ajax Promise对象,
var getDataList=new Promise(function(resolve,reject){
    $.ajax({
        type:"get",
        url:"index.aspx",
        success:function(data){
            if(data.Status=="1"){
                resolve(data.ResultJson)//在异步操作成功时调用
            }else{
                reject(data.ErrMsg);//在异步操作失败时调用
            }
        }
    });
})
//Promise的方法then,catch方法
getUserInfo.then(function(ResultJson){
    //通过拿到的数据渲染页面
}).catch(function(ErrMsg){
    //获取数据失败时的处理逻辑
})
//Promise的all方法,等数组中的所有promise对象都完成执行
Promise.all([getUserInfo,getDataList]).then(function([ResultJson1,ResultJson2]){
    //这里写等这两个ajax都成功返回数据才执行的业务逻辑
})

标签:function,异步,地狱,Promise,promise,回调,data
来源: https://blog.csdn.net/weixin_49684597/article/details/114988023