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)

大家都在看

  • 【小记】Ubuntu 工具链升级 gcc 流程

    我的是 Ubuntu Server 20.04 LTS,默认 gcc-9,工具链升级至 gcc-11,和 Ubuntu 22.04 LTS 保持一致。 如果本文发文时间比较旧,你所…

    Linux 2023年6月13日
    074
  • Kafka部署安装及简单使用

    一、环境准备 1、jdk 8+ 2、zookeeper 3、kafka 说明:在kafka较新版本中已经集成了zookeeper,所以不用单独安装zookeeper,只需要在kaf…

    Linux 2023年6月13日
    0112
  • 网络中冗余备份

    冗余备份的重要性 如今社会,网络是各个产业的新的血脉,网络的稳定性至关重要,一旦网络出现故障,导致断网、延迟丢包等很可能会导致生产作业停滞,造成较经济损失,为此冗余备份至关重要,从…

    Linux 2023年6月6日
    0122
  • C++复制构造函数,类型转换构造函数,析构函数,引用,指针常量和常量指针

    复制构造函数形如className :: className(const &) / className :: className(const className &…

    Linux 2023年6月7日
    085
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

    Linux 2023年6月13日
    090
  • Flink Table Api & SQL 初体验,Blink的使用

    概述 Flink具有Table API和SQL-用于统一流和批处理。 Table API是用于Scala和Java的语言集成查询API,它允许以非常直观的方式组合来自关系运算符(例…

    Linux 2023年6月7日
    0117
  • 5.5 Vim移动光标命令汇总

    Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键。 Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有…

    Linux 2023年6月7日
    0103
  • [Linux]LVS(Linux Virtual Server)

    LVS(Linux Virtual Server) LVS(Linux Virtual Server) 什么是LVS? 为什么要用LVS? LVS的组成及作用 LVS相关术语 LV…

    Linux 2023年6月13日
    088
  • BKT的胡测题解:第一套第三题base

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

    Linux 2023年6月6日
    098
  • Centos 7防火墙策略配置指南

    Centos 7防火墙策略配置指南 —— 清听凌雪慕忆 @ 1. 开启防火墙 1.1 user切换到root用户 1.2 查看防火墙服务状态 1.3 查看firewall的状态 1…

    Linux 2023年6月7日
    0151
  • 操作系统实现-printk

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们来实现最基础,也是最常见的函数 print,大家都知道这个是可变…

    Linux 2023年6月13日
    0106
  • xshell使用小技巧

    方便复制:Tool –> options –> right buttion(paste the clipboard contents) and …

    Linux 2023年6月7日
    091
  • 中土批量运维神器《ps1屠龙刀》 pk 西域批量运维圣器《ansible圣火令》

    据故老相传,运维界有句话:”脚林至尊,宝刀【ps1屠龙】,号令被控,莫敢不从”。 https://gitee.com/chuanjiao10/kasini3…

    Linux 2023年6月14日
    0112
  • windows 使用挂载盘提供FTP服务

    环境说明: NFS服务器:centos7.0 IP:192.168.18.10 FTP服务器:windows server 2008 IP:192.168.18.41 准备工作: …

    Linux 2023年6月8日
    0169
  • supervisord 进程管理利器

    Supervisor概述 ​ supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序。superv…

    Linux 2023年6月14日
    0112
  • AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践

    云知声是一家专注于语音及语言处理的技术公司。 Atlas 超级计算平台是云知声的计算底层基础架构,为云知声在 AI 各个领域(如语音、自然语言处理、视觉等)的模型迭代提供训练加速等…

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