设为首页 加入收藏

TOP

ES6简述(二)
2019-09-17 19:08:51 】 浏览:59
Tags:ES6 简述
:25}'; console.log(JSON.parse(json));

{name: "xiaoming", age: 25}

异步操作

  • 优点:程序性能好,资源利用率高、用户体验好
  • 缺点:程序员体验不好

问题:按顺序拉取数据
环境:服务器
我用的是WampServer

data/1.json

{a: 1}

./data/2.json

{b: 12}

./data/3.json

{c: 16}

./html

 $.ajax({
      url: 'data/1.json',
      dataType: 'json',
      success(data1) {
        $.ajax({
          url: 'data/2.json',
          dataType: 'json',
          success(data2) {
            $.ajax({
               url: 'data/3.json',
            dataType: 'json',
            success(data3) {
              console.log(data1,data2,data3)
            }
          });
          }
        });
      }
    });

{a: 1} {b: 12} {c: 16}

因为这种写法恶心,所以Promise出现了
了解一下Promise,其实jQuery的ajax也是Promise

let p=new Promise(function (resolve, reject){//resolve成功,reject失败
      $.ajax({
        url: 'data/1.json',
        dataType: 'json',
        success(data){
          resolve(data);
        },
        error(res){
          reject(res);
        }
      });
    });

    p.then(function (data){
      alert('成功');
      console.log(data);
    }, function (res){
      alert('失败');
      console.log(res);
    });

怎么用

Promise.all([
      $.ajax({url:'data/1.json', dataType: 'json'}),
      $.ajax({url:'data/2.json', dataType: 'json'}),
      $.ajax({url:'data/3.json', dataType: 'json'})
      ]).then(([data1,data2,data3])=>{
        console.log(data1,data2,data3);
    },(res)=>{
      alert('错了')//一个接口出错就不渲染
    })

{a: 1}a: 1__proto__: Object
{b: 12}b: 12__proto__: Object
{c: 16}c: 16__proto__: Object

但是Promise有个致命的缺点,处理不了逻辑(第一个数据可能决定后面读什么)
因此async/await登场了,专门配合Promise,用同步的方法来写异步。
但是其实编译完还是恶心的嵌套,只不过不需要我们程序员来写,编译就完了

let show = async ()=> {
  let data1 = await $.ajax({url: 'data/1.json', dataType: 'json'});//await后面跟的是Promise
  let data2 = await $.ajax({url: 'data/2.json', dataType: 'json'});
  let data3 = await $.ajax({url: 'data/3.json', dataType: 'json'});
  console.log(data1,data2,data3)
}
show();

{a: 1} {b: 12} {c: 16}

处理逻辑

let show = async ()=> {
      let data1 = await $.ajax({url: 'data/1.json', dataType: 'json'});
      if(data1<10) {
        let data2 = await $.ajax({url: 'data/2.json', dataType: 'json'});
        console.log(data1,data2)
      }else {
        let data3 = await $.ajax({url: 'data/3.json', dataType: 'json'});
        console.log(data1,data3)
      }
    }
    show();

{a: 1} {c: 16}

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JS 动态表格 下一篇跨浏览器的打印程序的设计

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目