美文网首页
Vue-promise请求数据&调用方法

Vue-promise请求数据&调用方法

作者: Christoles | 来源:发表于2019-04-22 11:25 被阅读0次

1. Promise 基本概念:

  1. Promise是一个构造函数,所以可以 new 出一个Promise的实例;
  2. 在Promise上有两个函数 resolve (成功之后的回调函数)和 reject (失败后的回调函数);
  3. 在Promise构造函数的prototype属性上,有一个 .then() 方法。
    所以只要是Promise构造函数创建的实例,都可以访问到 .then()方法;
  4. Promise表示一个一步操作,每当我们new一个Promise的实例,这个实例就代表具体的 异步 操作。
  5. Promise创建的实例,是一个异步操作,这个异步操作结果,只有两种结果:
    状态1:异步执行 成功,需要在内部调用成功的回调函数resolve把结果返回给调用者
    状态2:异步执行 失败,需要在内部调用失败的回调函数reject把结果返回调用者
  6. 由于Promise的实例是一个异步操作,所以内部拿到操作结果后,无法使用return把操作结果返回给调用者
    这个时候只能使用 回调函数 的形式,把成功或失败的结果,返回给调用者,具体:
    我们可以在new出来的Promise实例上,调用 .then()方法,预先为这个Promise异步操作,指定成功(resolve)和失败(reject)回调函数。

2. Promise请求数据函数的封装&调用方法:

<script type="text/javascript">
    //测试一个请求网址
    var baseUrl = "https://api.apiopen.top/";
    //用promise封装ajax请求
    function ajaxPromise(type,_url){
        return new Promise(function(resolve,reject){// Promis实例化
            var xhr = new XMLHttpRequest();
            xhr.open(type,_url);
            xhr.send();
            xhr.addEventListener("readystatechange",function(){
                if(xhr.readyState !=4 ){// 监听状态不对的时候 不指定函数
                    return;
                }
                if(xhr.readyState==4&&xhr.status==200){
                    var res = JSON.parse(xhr.responseText);
                    console.log("ajaxPromise",res)
                    resolve(res); // 回调成功返回
                }else{
                    reject();// 回调失败返回
                }
            })
        })
    }
    
    //第1种调用方法 --- then().catch()
    ajaxPromise("get",baseUrl+"recommendPoetry").then(function(res){
        console.log("请求成功",res);
    }).catch(function(){
        console.log("请求失败")
    })
    //第2种调用方法 --- then(function,function)
    ajaxPromise("get",baseUrl+"recommendPoetry").then(function(res){
        console.log("请求成功2",res);
    },function(){
        console.log("请求失败2")
    })
</script>

相关文章

  • Vue-promise请求数据&调用方法

    1. Promise 基本概念: Promise是一个构造函数,所以可以 new 出一个Promise的实例; 在...

  • Ajax学习笔记

    请求状态:xhr.readyState0:创建对象1:已经调用open方法2:已经调用send方法3:开始返回数据...

  • AngularJs $http请求对象

    用于操作数据,调用接口。 $http({ method: 'GET',//配置请求方法 url: '/someUr...

  • uni-app

    1. request数据请求封装 调用 封装的方法 deepMerge文件内容 deepClone文件内容

  • 关于SVProgressHUD的showSuccessWithS

    在项目中,网络请求的时候调用show方法,请求成功调用showSuccessWithStatus,请求失败调用sh...

  • UIWebView属性及方法

    UIWebView代理 UIWebView代理方方法 web请求数据及加载数据 web执行JS代码(OC调用JS的...

  • 使用Agentweb与H5交互 自动切换线程 导致Autodis

    需求:H5界面调用Android方法,成功后进行网络请求拉取数据。 遇到问题:当H5调用方法成功后,继续调用网络请...

  • servlet

    servlet的作用:接收请求数据,处理请求,完成响应。 servlet的大多数方法不由我们调用,而是tomcat...

  • 使用promise封装ajax请求

    封装一个ajax请求方法: 调用ajax方法,发送请求

  • Grand Central Dispatch

    使用GCD组加载多个网络请求 全部返回数据好调用 nofify进行数据的整理:方法1:NSArray * urls...

网友评论

      本文标题:Vue-promise请求数据&调用方法

      本文链接:https://www.haomeiwen.com/subject/lytygqtx.html