基本概念:

  Promise : 是 ES6 中新增的异步编程解决方案,提现在代码中他是一个对象 可以通过Promise构造函数来实例化。

  -new Promise(cb) ===> 实例的基本使用,Pending Resolved Rejected

> 两个原型方法:
  

-Promise.prototype.then()
-Promise.prototype.catch()

> 两个常用的 静态方法。
  

-Promise.all();
-Promise.resolve();
  conse imgs=[
    "http://i1.piimg.com/1949/4f411ed22ce88950.jpg",
    "http://i1.piimg.com/1949/5a35e8c2b246ba6f.jpg",
    "http://i1.piimg.com/1949/1afc870a86dfec5f.jpg"
  ];
//new Promise(cb);
//Pending(进行中)===>Resolved(已完成)
//Pending(进行中)===>Rejected(已失效)

const p = new Promise(function(resolve,reject){
  const img = new Image();
  img.onload=function(){
  resolve(this);
};
img.onerror=function(err){
  reject(new Error("图片加载失败"));
  };
})

console.log(123);
p.then(function(img){
  console.log("加载完成");
  document.body.appendChild(img);
}).catch(function(err){
  console.log(err);
});
console.log(456);

//////////////封装函数

function loadImg(url){
  const p = new Promise(function(resolve,reject){
    const img = new Image();
    img.onload=function(){
      resolve(this);
    };
    img.onerror=function(err){
      reject(new Error("图片加载失败"));
    };  
  });
  return p;
}
loadImg(imgs[0]).then(function(img){
  document.body.appendChild(img);
})

///////Promise.all() 可将多个 Promise实例包装成一个新的Promise实例。

  const allDone=Promise.all([loadImg(imgs[0]),loadImg(imgs[1]),loadImg(imgs[2]),loadImg(imgs[""])]);

  allDone.then(function(datas){
    datas.forEach(function(item,i){
      document.body.appendChild(item);
    });
    }).catch(function(err){
      console.log(err);
  })

///////Promise.resolve()

  

Promise.resolve(loadImg(imgs[0])).then(function(img){
  document.body.appendChild(img);
})

///////Promise.resolve()

  

Promise.resolve(loadImg(imgs[0])).then(function(img){
  document.body.appendChild(img);
})

以上。

ES6——异步操作之Promise的更多相关文章

  1. ES6异步操作之Promise

    一直以来觉得异步操作在我心头像一团迷雾,可是它重要到我们非学不可,那就把它的面纱解开吧. ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 异步 ...

  2. es6中的promise对象

    Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resol ...

  3. 深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise

    第一部分,Promise 加入 ES6 标准 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6515855.html 未经作者允许不得转载! 从 jquer ...

  4. ES6中的Promise用法

    Node的产生,大大推动了Javascript这门语言在服务端的发展,使得前端人员可以以很低的门槛转向后端开发. 当然,这并不代表迸发成了全栈.全栈的技能很集中,绝不仅仅是前端会写一些HTML和一些交 ...

  5. 异步操作之 Promise 和 Async await 用法进阶

    ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...

  6. vuex+Es6语法补充-Promise

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,采用 集中式存储管理 单页面的状态管理/多页面状态管理 使用步骤: // 1.导入 import Vuex from 'vuex' // ...

  7. ES6异步操作Promise

    什么是Promise Promise是异步编程的一种解决方案,说白了就是一个构造函数,带有all,reject,resolve这几个方法,圆形上有then,catch等方法 Promise的特点 对象 ...

  8. ES6 - Note5:Promise

    1.Promise介绍 Promise最早是社区提出和实现,后面ES6将其写入标准,并原生提供Promise对象,是一种异步编程的解决方案,具体的概念大家可以去查看相关的资料.传统上处理异步都是以ca ...

  9. es6面试问题——Promise

    话说刚换工作一个月有余,在上家公司干的实在是不开心,然后就出来抱着试试的心态出来面了几家公司,大多数公司问的前端问题也就那么多,其中有个面试问题让我记忆犹新,只因为没有答上来,哈哈! 当时面试官问我怎 ...

随机推荐

  1. 版本控制器svn详细

    2 svn介绍 2.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解决代码冲突困难 容易 ...

  2. javascript客户端遍历控件与获取父容器对象

    javascript客户端遍历控件与获取父容器对象示例代码 1,遍历也面中所有的控件function findControlAll()    {        var inputs=document. ...

  3. SQLITE3 使用总结(转)

    前序: Sqlite3 的确很好用.小巧.速度快.但是因为非微软的产品,帮助文档总觉得不够.这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记. 这里要注明,我是一个跨 ...

  4. Notepad++中的高级查找

      准备以下字符串用来演示 abcdeab cdeabcde abcd eabcde   基于扩展的查找 基于扩展的查找不能算是真正的正则表达式搜索,因此这种查找方式仅是提供了支持转义字符.主要常用的 ...

  5. springmvc web.xml配置之 -- SpringMVC IOC容器初始化

    SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...

  6. 96. Unique Binary Search Trees (Tree; DP)

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  7. 使screen支持滚动

    在Linux中,常用的串口工具有minicom和screen,minicom可能使用得比较多,但是我比较喜欢screen,因为它的输出是彩色的,更舒服.更能突出重点. 使用screen来打开串口也非常 ...

  8. Java 中的类

    public class Test{ public static void main(String[] args){ Animal a1 = new Dog(); a1.shout();//编译通过 ...

  9. Luogu 4602 [CTSC2018]混合果汁

    BZOJ 5343 福利题. 对于每一个询问可以二分$d$,然后把满足条件的果汁按照$p$从小到大排序贪心地取$L$升看看满不满足价格的条件. 那么按照$p$建立权值主席树,$chk$的时候在主席树上 ...

  10. icp算法

    https://github.com/tttamaki/ICP-test https://github.com/tttamaki/SICP-test