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)

大家都在看

  • Mac Mini 安装Ubuntu20.04 KVM

    在一台 Mac Mini mid 2011上安装Ubuntu20.04并配置KVM环境, 过程也适用于其他版本的Mac主机. I5 2415, 内存8G*2, 硬盘 SSD 500…

    Linux 2023年5月27日
    096
  • NewReplacer使用技巧

    上次写博客至今有段时间了,这些日子,认真过,努力过,职场中不管有哪些让人失意或不快的事,终归到底,是自己不够强大。。。 好吧,新的一年,不磨磨唧唧了,一般处理xss漏洞使用正则匹配…

    Linux 2023年6月6日
    088
  • stat命令的实现

    任务详情 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep -r的使用 伪代码 产品代码 mystate.c,提交码云链接 测试代码,…

    Linux 2023年5月27日
    081
  • Mysql数据库 ALTER 基本操作

    背景: ALTER作为DDL语言之一,工作中经常遇到,这里我们简单介绍一下常见的几种使用场景 新建两个测试表offices 和 employess CREATE TABLE off…

    Linux 2023年6月6日
    099
  • 【Ubuntu】如何将Ubuntu软件源切换到国内源?

    为什么切换软件源? 当初次部署Ubuntu镜像时,会发现更新软件时速度非常慢,因为Ubuntu的软件都来自与国外,所下载或更新软件时的速度非常慢,此时就可以选择切换到国内的软件源来…

    Linux 2023年6月13日
    086
  • Spring中毒太深,离开了Spring,我居然连最基本的接口都不会写了¯_(ツ)_/¯

    前言 众所周知,Java必学的框架其中就是SSM,Spring已经融入了每个开发人员的生活,成为了不可或缺的一份子。 随着 Spring 的崛起以及其功能的完善,现在可能绝大部分项…

    Linux 2023年6月13日
    074
  • 搭建redis集群

    这里总结性给出搭建步骤: 1、 至少6个节点,三主三从 2、 编译redis源码 3、放置集群的配置文件redis.conf 创建工作目录: 每个文件夹下新建redis.conf …

    Linux 2023年5月28日
    076
  • 2020年12月-第02阶段-前端基础-CSS Day04

    浮动(float) *记忆 能够说出 CSS 的布局的三种机制 *理解 能够说出普通流在布局中的特点能够说出我们为什么用浮动能够说出我们为什么要清除浮动 *应用 能够利用浮动完成导…

    Linux 2023年6月8日
    073
  • Linux—OpenSSH服务

    Linux—OpenSSH服务 OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议可以用来进行远程控制或在计算机之间传送文件。而实现此功能的传…

    Linux 2023年6月7日
    090
  • js阻止事件冒泡(phpcms,浮窗第一次10秒弹出后每30秒弹出,动态更换日期)

    /* v9_date_list 日期表 tiptime 考试日期(数据类型为日期) 如果要实现浮窗淡入淡出用jquery的(“#main0”).fadeIn…

    Linux 2023年6月13日
    094
  • 将Java代码打包成jar文件转换为.exe可执行程序方法

    ​ 做完学生管理系统后我想将代码打包成一个可执行程序,那样就可以直接点击在Windows下运行了,下面就跟大家分享下打包方法。 将Java的代码转换成 .exe 文件需要先把代码打…

    Linux 2023年6月6日
    094
  • 【原创】Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    078
  • 跳石板—牛客网

    #include #include #include using namespace std; //计算第i个&#x7684…

    Linux 2023年6月13日
    0103
  • CentOS8.4对home目录扩容

    在工作中会遇到home空间不足的情况需对其扩容 一、添加新硬盘 我的环境是虚拟机,首先为其添加一块16G的硬盘 进入机器首先 df -h 看一下发现CentOS8.4默认使用逻辑卷…

    Linux 2023年5月27日
    083
  • [云计算]TCP云架构-思维导图

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/Skybiubiu/p/16276893.htmlAut…

    Linux 2023年6月13日
    075
  • iostream 未完

    声明控制从标准流读取和写入到标准流的对象。 通常是唯一需要从 C++ 程序执行输入和输出的标头。 #include <iostream></iostream&gt…

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