zoukankan      html  css  js  c++  java
  • es6中的promise对象

         Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) 、Resolved(已经完成)和Rejected(已失败)

    ES6规定,Promise对象是一个构造函数,用来生成Promise实例。

    var promise=new Promise(function(resove,reject){
         if (/* 异步操作成功 */){
        resolve(value);
      } else {
        reject(error);
      }
    })
    

    Promise实例生成以后,可以用then方法分别指定Resolved状态和Reject状态的回调函数。

    promise.then(function(value) {
      // success
    }, function(error) {
      // failure
    });
    

    案例

    var promise=new Promise(function(resolve,reject){
             console.log('promise');
         })
         promise.then(function(){
            console.log('我后执行')
         })
         console.log('我先执行')

    //上面代码中,Promise新建后立即执行,所以首先输出的是“Promise”。然后,then方法指定的回调函数,
    //将在当前脚本所有同步任务执行完才会执行,所以“我后执行” 最后输出。

     ajax

     1      var getJSON=function(url){
     2         var promise=new Promise(function(resolve,reject){
     3             var xhr=new XMLHttpRequest();
     4             xhr.open('get',url);
     5             xhr.onreadystatechange=handler;
     6             xhr.send(null);
     7 
     8             function handler(){
     9                 if(this.readystate!==4){
    10                     return;
    11                 }
    12                 if(this.status==200){
    13                     resolve(this.responseText)
    14                 }else{
    15                     reject(new Error(this.statusText));
    16                 }
    17             }
    18         })
    19           return promise;
    20      }
    21     getJSON("/get.json").then(function(json) {
    22       console.log('Contents: ' + json);
    23     }, function(error) {
    24       console.error('出错了', error);
    25     });
    View Code
  • 相关阅读:
    usaco 1.11
    当数组时全局变量时。。。怎样进行循环初始化
    hdu 1097 用到了位的移动
    hdu 1006
    HNOI2008]神奇的国度
    App测试基本流程详解(汇总整理)
    IOS测试Fastmonkey
    pytest+allure2+jenkins环境部署
    如何在cmd查看文件内容的md5值
    软件测试学习linux基础
  • 原文地址:https://www.cnblogs.com/lijinblogs/p/5894176.html
Copyright © 2011-2022 走看看