• promise对象调试


    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <script type="text/javascript">
                const p1 = new Promise(function (resolve, reject) {
                  setTimeout(() => resolve("test"), 2000)
                })
                
                const p2 = new Promise(function (resolve, reject) {
                    //经过调试发现,resolve的内容和状态能被传入的promise实例覆盖,如果是reject则不能被覆盖。
                  setTimeout(() => reject(p1), 3000)
                })
                
                console.log(p1);
                console.log(p2);
                p2
                  .then(function(result) {
                      console.log(result);
                      return "chenyujie";})
                  .catch(function(error ) {
                      console.log("testsss");
                      console.log(error);
                      return p2;})
                  .then(function(result) {
                      console.log(result);
                      console.log(this);}, 
                        function(error){
                          console.log("zhongguo");
                          console.log(error);
                        })
                  // .catch(result => {
                     //  console.log(result);
                  // })
            </script>
        </body>
    </html>

    then函数返回一个promise对象,promise对象有两个基本属性,状态和结果,其中then回调函数的返回值如果是字符串则直接为结果,状态为fulfilled,如果返回值为promise对象,则以对象状态和结果为准。(具体情况可以调试看,不一定准确,该对象有点麻烦)

    var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
    
    const getJSON = function(url) {
      const promise = new Promise(function(resolve, reject){
        const handler = function() {
          if (this.readyState !== 4) {
            return;
          }
         // console.log(this);
          if (this.status === 200) {
            console.log(this.responseType)
            resolve(this.responseType);
          } else {
            console.log(this.status)
            console.log("-------------"+this.statusText+"----------------")
            reject(new Error(this.statusText));
          }
        };
        const client = new XMLHttpRequest();
        //client.open("GET", url, false);   //第三个参数设置为false,使得函数执行为同步操作
        client.open("GET", url);
        client.onreadystatechange = handler;
        client.responseType = "html";
        client.setRequestHeader("Accept", "text/html");
        console.log("test1")
       client.send();
        console.log("test2")
    
      });
    
      return promise;
    };
    
    //getJSON("https://www.baidu.com/wang")
    
    getJSON("https://www.baidu.com/wang").then(function(json) {
      console.log('Contents: ' + json);
    }, function(error) {
      console.log('出错了', error);
    });

    作者:小德cyj
    出处:http://www.cnblogs.com/dongzhuangdian
    欢迎转载,希望注明出处

  • 相关阅读:
    2020中国最好大学排名.py(亲测有效)
    手机号码归属地的自动查询.py(亲测有效)
    网络图片的爬取和存储.py(亲测有效)
    百度360搜索关键词提交.py(亲测有效)
    亚马逊商品页面爬取(使用headers字段).py(亲测有效)
    淘宝商品页面的爬取.py(亲测有效)
    爬取网页的通用代码框架.py(亲测有效)
    匿名函数function前面的! ~等符号作用小解
    ng之自定义指令
    用nodejs搭建一个简单的服务监听程序
  • 原文地址:https://www.cnblogs.com/dongzhuangdian/p/15063375.html
Copyright © 2020-2023  润新知