zoukankan      html  css  js  c++  java
  • 为什么使用promise

    使用场景

    前端在调用ajax的时候难免会遇到一个接口需要另一个接口的数据来获取
    往往我们会直接将那个接口直接写在上一个接口的回调函数里,但是它增加了函数的嵌套深度也会造成一定的逻辑混乱,如果多几个接口嵌套就比较糟心了,这就是回调地狱了。
    而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都成功返回数据才执行的业务逻辑
    })
    
  • 相关阅读:
    apache安装错误error: APR not found解决办法
    (总结)Nginx配置文件nginx.conf中文详解
    多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
    x-forwarded-for的深度挖掘
    hashcode与字符串
    千万不要误用 java 中的 HashCode 方法
    浅谈Java中的hashcode方法
    MySQL中concat函数
    mysql prepare语句使用
    修改表结构
  • 原文地址:https://www.cnblogs.com/llff123/p/9503275.html
Copyright © 2011-2022 走看看