Map&Promise

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ES6</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="promise.js"></script>
  </head>
  <body>
  <button>click</button>
  <script type="text/javascript">
      //Map   键值对 类似对象 传统对象只能用字符串当作键名,Map的键可以是其它的类型
      var m = new Map();
        m.set('a','a').set('b','b');
        var a={name:'hello'};
        m.set(a,'name');
        m//
        .get()
        .has()
        .delete()
        .clear()
        .size

        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        for(let key of m1.keys()){
            console.log(key);
        }

        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        for(let key of m1.values()){
            console.log(key);
        }

        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        for(let [k,v] of m1){
            console.log(k,v);
        }

        //扩展运算符
        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        var s = [...m1.keys()];  //a,b,c

        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        var s = [...m1.values()];  //123

        //与其它结构转换
        //1\MAP转为数组
        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        //[...m1.keys()];
        //[...m1.values()];
        //[...m1];
        //2、数组转为map
        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        var s = [...m1];
        //var m2 = new Map([...m1]);
        var m2 = new Map(s);
        m2.size
        //3、转为对象
        var m1 = new Map([['a','1'],['b','2'],['c','3']]);
        var o ={};
        for (let [k,v] of m1){
            o[k] =v;
        };
        console.log(o);

        //promise   优化AJAX  三种状态(进行中,已完成,已失败)  </script>
  </body>
</html>
const getJSON = function(url,type,data) {
  const promise = new Promise(function(resolve, reject){
    const handler = function() {
      if (this.readyState !== 4) {
        return;
      };
      if (this.status === 200) {
        resolve(this.response);
      } else {
        reject(new Error(this.statusText));
      }
    };
    const client = new XMLHttpRequest();
    client.open(type, url);
    client.onreadystatechange = handler;
    client.responseType = "json";
    if(type=='get'){
      client.send();
    }else {
      client.setRequestHeader("Content-Type","application/json");//data&#x53EA;&#x80FD;&#x662F;JSON&#x5B57;&#x7B26;&#x4E32;
      client.send(JSON.stringify(data))  //post&#x8BF7;&#x6C42;&#x4F20;&#x5165;string
    }

  });
  return promise;
};

$(function() {
    $("button").click(function() {
        getJSON('http://localhost:3000/info','get')
    .then(function(json) {
        //success
        console.log('ok');
    })
    .catch(function(error) {
          console.error('&#x51FA;&#x9519;&#x4E86;', error);
        });
    });
  //JQUERY 1.5.0&#x8FD4;&#x56DE;&#x7684;&#x662F;xhr&#x5BF9;&#x8C61;  &#x9AD8;&#x4E8E;1.5.0&#x8FD4;&#x56DE;&#x7684;deferred&#x5BF9;&#x8C61;
})
<!DOCTYPE>
 <html lang="zh-en">
 <head>
     <title>js&#x5B9E;&#x73B0;&#x7B80;&#x5355;&#x7559;&#x8A00;&#x677F;</title>
     <meta http-equiv="content-type" content="text/html;charset=utf-8">
     <script src="js/jquery-1.11.0.min.js"></script>
     <script type="text/javascript" src="js/ajax_then.js"></script>
     <link href="css/bootstrap.min.css" rel="stylesheet">
     <link href="css/demo.css" rel="stylesheet">
 </head>
 <body>
     <div class="container">
        <div class="form-horizontal">
            <div class="form-group">
                <label class="col-sm-1 control-label">&#x6635;&#x79F0;&#xFF1A;</label>

            </div>
            <div class="form-group">
                <label class="col-sm-1 control-label">&#x7559;&#x8A00;&#xFF1A;</label>

            </div>
            <div class="form-group">
                <div class="col-sm-offset-1 col-sm-11">
                    <button type="submit" class="btn btn-success submit">&#x6DFB;&#x52A0;&#x7559;&#x8A00;</button>
                    <button class="btn btn-success queryThen">&#x4E32;&#x884C;</button>
                    <button class="btn btn-success queryWhen">&#x5E76;&#x884C;</button>
                </div>
            </div>
        </div>

        <div class="panel panel-primary">
            <div class="panel-heading">&#x7559;&#x8A00;&#x5217;&#x8868;</div>

        </div>
    </div>
</body>
</html>
/**
Simple Server for web api test.

*/
/**Connect&#x662F;&#x4E00;&#x4E2A;node&#x4E2D;&#x95F4;&#x4EF6;&#xFF08;middleware&#xFF09;&#x6846;&#x67B6;&#x3002;
&#x5982;&#x679C;&#x628A;&#x4E00;&#x4E2A;http&#x5904;&#x7406;&#x8FC7;&#x7A0B;&#x6BD4;&#x4F5C;&#x662F;&#x6C61;&#x6C34;&#x5904;&#x7406;&#xFF0C;&#x4E2D;&#x95F4;&#x4EF6;&#x5C31;&#x50CF;&#x662F;&#x4E00;&#x5C42;&#x5C42;&#x7684;&#x8FC7;&#x6EE4;&#x7F51;&#x3002;
&#x6BCF;&#x4E2A;&#x4E2D;&#x95F4;&#x4EF6;&#x5728;http&#x5904;&#x7406;&#x8FC7;&#x7A0B;&#x4E2D;&#x901A;&#x8FC7;&#x6539;&#x5199;request&#x6216;&#xFF08;&#x548C;&#xFF09;response&#x7684;&#x6570;&#x636E;&#x3001;&#x72B6;&#x6001;&#xFF0C;&#x5B9E;&#x73B0;&#x4E86;&#x7279;&#x5B9A;&#x7684;&#x529F;&#x80FD;&#x3002;
&#x4E2D;&#x95F4;&#x4EF6;&#x5C31;&#x662F;&#x7C7B;&#x4F3C;&#x4E8E;&#x4E00;&#x4E2A;&#x8FC7;&#x6EE4;&#x5668;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x5728;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E4B;&#x95F4;&#x7684;&#x4E00;&#x4E2A;&#x5904;&#x7406;&#x8BF7;&#x6C42;&#x548C;&#x54CD;&#x5E94;&#x7684;&#x7684;&#x65B9;&#x6CD5;&#x3002;*/

var connect = require('connect');  //&#x521B;&#x5EFA;&#x8FDE;&#x63A5;
var bodyParser = require('body-parser');   //body&#x89E3;&#x6790;

var app = connect()
    .use(bodyParser.json())   //JSON&#x89E3;&#x6790;
    .use(bodyParser.urlencoded({extended: true}))
    //use()&#x65B9;&#x6CD5;&#x8FD8;&#x6709;&#x4E00;&#x4E2A;&#x53EF;&#x9009;&#x7684;&#x8DEF;&#x5F84;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x5BF9;&#x4F20;&#x5165;&#x8BF7;&#x6C42;&#x7684;URL&#x7684;&#x5F00;&#x59CB;&#x5339;&#x914D;&#x3002;
    //use&#x65B9;&#x6CD5;&#x6765;&#x7EF4;&#x62A4;&#x4E00;&#x4E2A;&#x4E2D;&#x95F4;&#x4EF6;&#x961F;&#x5217;
    .use(function (req, res, next) {
        //&#x8DE8;&#x57DF;&#x5904;&#x7406;
        // Website you wish to allow to connect
        res.setHeader('Access-Control-Allow-Origin', '*');  //&#x5141;&#x8BB8;&#x4EFB;&#x4F55;&#x6E90;
        // Request methods you wish to allow
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');  //&#x5141;&#x8BB8;&#x4EFB;&#x4F55;&#x65B9;&#x6CD5;
        // Request headers you wish to allow
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,X-Session-Token');   //&#x5141;&#x8BB8;&#x4EFB;&#x4F55;&#x7C7B;&#x578B;
        res.writeHead(200, {"Content-Type": "text/plain;charset=utf-8"});    //utf-8&#x8F6C;&#x7801;
        next();  //next &#x65B9;&#x6CD5;&#x5C31;&#x662F;&#x4E00;&#x4E2A;&#x9012;&#x5F52;&#x8C03;&#x7528;
    })
    .use('/add', function(req, res, next) {
        console.log(req.body);
        var data = [];
        data.push(req.body);
        console.log(data);
        res.end(JSON.stringify(data));
        next();
    })
    .use('/map/add1', function(req, res, next) {
        var data={
            "code": "200",
            "msg": "success",
            "result": {
                "id":1,
            }
        };
        res.end(JSON.stringify(data));
        next();      //
    })
    .use('/map/add2', function(req, res, next) {
        var data={
            "code": "200",
            "msg": "success",
            "result": {
                "name": "sonia",
                "content": "&#x5E7F;&#x544A;&#x6295;&#x653E;1"
            }
        };
        res.end(JSON.stringify(data));
        next();      //
    })
    .listen(3000);
console.log('Server started on port 3000.');
const getJSON = function(url,type, data) {
  const promise = new Promise(function(resolve, reject){
    const handler = function() {
      if (this.readyState !== 4) {
        return;
      };
      if (this.status === 200) {
        resolve(this.response);
      } else {
        reject(new Error(this.statusText));
      }
    };
    const client = new XMLHttpRequest();
    client.open(type, url);
    client.onreadystatechange = handler;
    client.responseType = "json";
    if(type =='get'){
        client.send();
    }else {
        client.setRequestHeader("Content-Type", "application/json");
        client.send(JSON.stringify(data));
    }
  });
  return promise;
};

$(function() {
    //&#x6DFB;&#x52A0;&#x6570;&#x636E;
    $(".submit").click(() => {
        let _name = $(".name").val(),
            _message = $(".message").val();
        if(_name =='' || _message =='') {
            alert('&#x8BF7;&#x8F93;&#x5165;&#x4FE1;&#x606F;&#xFF01;');
            return false;
        }
        $(".name,.message").val("");
        add(_name,_message);
    });
    let add = (name, message) => {
        getJSON("http:localhost:3000/add",'post', {name: name, message: message})
        .then(function(json) {
            for (let i=0; i<json.length; i++) { $(".messagelist").append(<li class="list-group-item"><span class="key">${json[i].name}</span><span>说:</span><span class="value">${json[i].message}</span>
                );
            }
        }, function(error) {
          console.error('&#x51FA;&#x9519;&#x4E86;', error);
        });
    };

    //&#x5217;&#x8868;&#x663E;&#x793A;
    let  listShow = () => {
        //&#x539F;&#x751F;promise
        /*getJSON("/map/get",'get').then(function(d) {
            _showList(d);
        }, function(error) {
          console.error('&#x51FA;&#x9519;&#x4E86;', error);
        });*/

        //$.ajax() &#x4F4E;&#x4E8E;1.5.0&#x7248;&#x672C;&#x7684;jQuery&#xFF0C;&#x8FD4;&#x56DE;&#x7684;&#x662F;XHR&#x5BF9;&#x8C61;&#xFF0C;&#x9AD8;&#x4E8E;1.5.0&#x7248;&#x672C;&#xFF0C;&#x8FD4;&#x56DE;&#x7684;&#x662F;deferred&#x5BF9;&#x8C61;&#xFF0C;&#x53EF;&#x4EE5;&#x8FDB;&#x884C;&#x94FE;&#x5F0F;&#x64CD;&#x4F5C;&#x3002;
        // &#x94FE;&#x5F0F;&#x5199;&#x6CD5;
        let list = $(".messageList"),str = "";
        $.ajax({url:"http:localhost:3000/map/get",dataType:"json",type:"get"})
    &#x3000;&#x3000;.done(function(d){

            })
    &#x3000;&#x3000;.fail(function(){ alert("&#x51FA;&#x9519;&#x5566;&#xFF01;"); });
    };

    //&#x67E5;&#x8BE2;&#x6570;&#x636E;
    //&#x94FE;&#x5F0F;&#x5199;&#x6CD5;  &#x4E32;&#x884C;
    $(".queryThen").click(()=> queryThen());
    let queryThen = ()=> {
        $.ajax({url:"http:localhost:3000/map/add1",dataType:"json",type:"get"})
    &#x3000;&#x3000;.then(data => {
                return $.ajax({url:"http:localhost:3000/map/add2",dataType:"json",type:"post",data:{id:data.result.id}})
             //return $.get("http:localhost:3000/map/add2", data.result.id);
            })
        .then(data => {
                alert(data);
            })
            .catch(error=>{
                console.log(error);
            })
    };

    let addPromise1 = new Promise((resolve,reject) => {
        getJSON("http:localhost:3000/map/add1",'get').then(function(d) {
            resolve(d);
        }, function(error) {
          console.error('&#x51FA;&#x9519;&#x4E86;', error);
        });
    });
    let addPromise2 = new Promise((resolve,reject) => {
        getJSON("http:localhost:3000/map/add2",'get').then(function(d) {
            resolve(d);
        }, function(error) {
          console.error('&#x51FA;&#x9519;&#x4E86;', error);
        });
    });
    // &#x5E76;&#x884C;  when &#x591A;&#x4E2A;&#x8BF7;&#x6C42;&#x5B8C;&#x6210;&#x540E;&#x8FD4;&#x56DE;
    $(".queryWhen").click(()=> queryWhen());
    let queryWhen = ()=> {
        /*$.when($.ajax({url:"/map/add1",dataType:"json",type:"get"}), $.ajax({url:"/map/add2",dataType:"json",type:"get"}))
        .then((data1,data2) => {
            console.log(data1[0]);
            console.log(data2[0]);
        }, () => { alert("&#x51FA;&#x9519;&#x5566;&#xFF01;"); });*/

        Promise.all([
          addPromise1,
          addPromise2
        ]).then(([add1,add2])=>{
            console.log(add1);
            console.log(add2);
        }, function(error) {
          console.error('&#x51FA;&#x9519;&#x4E86;', error);
        });
    };
})
</json.length;>

Original: https://www.cnblogs.com/Dewumu/p/14484835.html
Author: 德乌姆列特
Title: Map&Promise

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606844/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Fastadmin前台Getshell漏洞复现

    Fastadmin前台Getshell漏洞复现 一、简介 FastAdmin是一款基于ThinkPHP5+Bootstrap开发的极速后台开发框架。FastAdmin基于Apach…

    Linux 2023年5月28日
    0118
  • .NET Core 3.0, 发布将于今晚开始!

    期待已久的.NET Core 3.0即将发布! .NET Core 3.0在.NET Conf上发布。大约还有9个多小时后,.NET Conf开始启动。 第1天-9月23日 9:0…

    Linux 2023年6月7日
    085
  • 09_Linux基础-SHELL-标准输入与标准输出-重定向-管道

    09_Linux基础-SHELL-标准输入与标准输出-重定向-管道 博客🔗:https://blog.csdn.net/cpen_web &#x4F5C;&#x4E…

    Linux 2023年6月6日
    097
  • 初识MySQL数据库

    一 、引言 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住双十一期间全国的购票需求,你怎么写? 由于在同一时段抢票的人数太多,所以你的程序不可…

    Linux 2023年6月14日
    0121
  • vm-tools安装

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月6日
    074
  • 脚本安装lamp

    脚本安装lamp [root@localhost ~]# mkdir lamp [root@localhost ~]# cd lamp/ [root@localhost lamp]…

    Linux 2023年6月6日
    0126
  • USB转双串口产品设计-RS485串口

    基于USB转2路串口芯片CH342,可以为各类主机扩展出2个独立的串口。CH342芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动程序,可支持Windo…

    Linux 2023年6月7日
    0107
  • MySQL SUBSTRING_INDEX截取字符串

    一、SUBSTRING_INDEX 二、示例 Original: https://www.cnblogs.com/woods1815/p/16368248.htmlAuthor: …

    Linux 2023年6月13日
    080
  • WPF 切换主题使用 luna 复古版本

    本文告诉大家如何在 WPF 里面使用 luna 等复古主题 今天在 lsj 说他准备优化 WPF 的程序集时,准备删除 luna 等程序集时,找到了一段有趣的注释,发现在 WPF …

    Linux 2023年6月6日
    080
  • Linux之间的文件传输方式

    大数据集群往往涉及文件复制。我在研究大数据时总结了几种方法。 [En] Big data cluster often involves file copying. I summed…

    Linux 2023年5月27日
    0132
  • 使用shell脚本连接钉钉机器人发送消息

    一、前言 服务器上有时 定时任务、重要接口 等出现异常,导致数据不正常,不能及时通知到服务负责人,及时处理问题。所以引入”钉钉”作为通知工具,当服务出现异常…

    Linux 2023年5月28日
    0116
  • podman(无根用户管理podman)

    用户操作在允许没有root特权的用户运行Podman之前,管理员必须安装或构建Podman并完成以下配置cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,…

    Linux 2023年6月7日
    086
  • MySQL注入与informantion_schema库

    只可读 自动开启 和MySQL注入有关的3个表 手动注入的使用案例 表介绍 查询一个表中全部字段的过程 MySQL V5.0安装完成会默认会生成一个库(informantion_s…

    Linux 2023年6月6日
    0114
  • 编程模式-表驱动编程

    刚开始编程时,往往会碰到一些根据不同条件执行不同功能的情况,通常都是采用if-else或者switch-case的方式,如果有很多的情况需要区分,则会有很多的 else if 或者…

    Linux 2023年6月7日
    0114
  • node.js和vue cli脚手架下载安装配置方法

    一、node.js安装以及环境配置 1、下载vue.js 下载地址: https://nodejs.org/en/ 2、安装node.js 下载完成后,双击安装包开始安装。安装地址…

    Linux 2023年6月7日
    0105
  • Git常用命令

    克隆拉取远程代码 git clone https://xxxxxxxxx 本地添加远程仓库地址 git remote add origin(设定名字,随意。不过一般都叫这个名字) …

    Linux 2023年6月8日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球