美文网首页
ES6总结 14- Promise

ES6总结 14- Promise

作者: 辣瓜瓜 | 来源:发表于2019-05-07 22:26 被阅读0次

ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。

异步

a执行完在执行b...一通过回调,二是事件触发,三是异步;

es5中的传统ajax,abcd很多任务,回调方法不便于修改,阅读,编写

{
  // 基本定义
  let ajax=function(callback){
    console.log('执行');
    setTimeout(function () {
      callback&&callback.call()
    }, 1000);
  };
  ajax(function(){
    console.log('timeout1');
  })
}

Promise的作用

{
  let ajax=function(){
    console.log('执行2');
    return new Promise(function(resolve,reject){//resolve是成功之后执行的方法   reject是失败的时候执行的方法
      setTimeout(function () {
        resolve()
      }, 1000);
    })
  };

  ajax().then(function(){//通过then来捕捉 成功和失败的时候执行的方法
    console.log('promise','timeout2');//可读性高
  })
} 

Promise的基本用法-异常捕获

{
  let ajax=function(num){
    console.log('执行4');
    return new Promise(function(resolve,reject){
      if(num>5){
        resolve()
      }else{
        throw new Error('出错了')
      }
    })
  }

  ajax(6).then(function(){
    console.log('log',6);
  }).catch(function(err){
    console.log('catch',err);
  });

  ajax(3).then(function(){
    console.log('log',3);
  }).catch(function(err){
    console.log('catch',err);
  });
}
//执行4 log6 出错了

Promise的高级用法

头条 fade流,三张图都加载完在放在页面上,用户体验好

{
  // 所有图片加载完再添加到页面
  function loadImg(src){
    return new Promise((resolve,reject)=>{
      let img=document.createElement('img');
      img.src=src;
      img.onload=function(){
        resolve(img);
      }
      img.onerror=function(err){
        reject(err);
      }
    })
  }

  function showImgs(imgs){
    imgs.forEach(function(img){
      document.body.appendChild(img);
    })
  }

  Promise.all([  //把多个promise实例当做一个实例,all返回一个promise实例
    loadImg('http://i4.buimg.com/567571/df1ef0720bea6832.png'),
    loadImg('http://i4.buimg.com/567751/2b07ee25b08930ba.png'),
    loadImg('http://i2.muimg.com/567751/5eb8190d6b2a1c9c.png')
  ]).then(showImgs)

}

有一个图片加载完就添加到页面,先到先得,有一个回来就race执行

{
  // 有一个图片加载完就添加到页面
  function loadImg(src){
    return new Promise((resolve,reject)=>{
      let img=document.createElement('img');
      img.src=src;
      img.onload=function(){
        resolve(img);
      }
      img.onerror=function(err){
        reject(err);
      }
    })
  }

  function showImgs(img){
    let p=document.createElement('p');
    p.appendChild(img);
    document.body.appendChild(p)
  }

  Promise.race([  //先到先得,有一个回来就race执行
    loadImg('http://i4.buimg.com/567571/df1ef0720bea6832.png'),
    loadImg('http://i4.buimg.com/567751/2b07ee25b08930ba.png'),
    loadImg('http://i2.muimg.com/567751/5eb8190d6b2a1c9c.png')
  ]).then(showImgs)

}




















相关文章

  • ES6总结 14- Promise

    ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。...

  • 『ES6知识点总结』Promise

    『ES6知识点总结』Promise 文本主要内容如下: * Promise是什么? * 1.1 特点: * 1.2...

  • Promise浅析

    这是我自己最近学习promise的总结在ES6中Promise被列为正式规范,也是ES6中最重要的特性之一。 1....

  • Promise 使用详解

    查看了阮一峰ES6 借鉴里面的内容总结 什么是 Promise Promise 是异步编程的一种解决方案, 没有 ...

  • nodejs13

    promise 总结 promise是异步编程的解决方案,用社区提供,标准化到ES6中。该对象中存储着某个时间才会...

  • ES6--Promise

    学过ES6的同学大概都知道Promise,可想而知Promise在ES6中很重要。 Promise对象代表了未来将...

  • Promise.done(),Promise.finally()

    es6 Promise.done(),Promise.finally()promise对象的finally函数为什...

  • ES6 Promise

    ES6 promise 的一些常用方法 Promise.prototype.then() Promise.prot...

  • ES6异步:Promise

    #Promise迷你书通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise

  • es6 promise ajax 请求实例运用代码

    出处 2018前端面试总结,看完弄懂,工资少说加3K - 掘金 ---- es6 promise ajax 源码

网友评论

      本文标题:ES6总结 14- Promise

      本文链接:https://www.haomeiwen.com/subject/simyoqtx.html