ES6——异步操作之Promise
基本概念:
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的更多相关文章
- ES6异步操作之Promise
一直以来觉得异步操作在我心头像一团迷雾,可是它重要到我们非学不可,那就把它的面纱解开吧. ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 异步 ...
- es6中的promise对象
Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resol ...
- 深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
第一部分,Promise 加入 ES6 标准 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6515855.html 未经作者允许不得转载! 从 jquer ...
- ES6中的Promise用法
Node的产生,大大推动了Javascript这门语言在服务端的发展,使得前端人员可以以很低的门槛转向后端开发. 当然,这并不代表迸发成了全栈.全栈的技能很集中,绝不仅仅是前端会写一些HTML和一些交 ...
- 异步操作之 Promise 和 Async await 用法进阶
ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...
- vuex+Es6语法补充-Promise
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,采用 集中式存储管理 单页面的状态管理/多页面状态管理 使用步骤: // 1.导入 import Vuex from 'vuex' // ...
- ES6异步操作Promise
什么是Promise Promise是异步编程的一种解决方案,说白了就是一个构造函数,带有all,reject,resolve这几个方法,圆形上有then,catch等方法 Promise的特点 对象 ...
- ES6 - Note5:Promise
1.Promise介绍 Promise最早是社区提出和实现,后面ES6将其写入标准,并原生提供Promise对象,是一种异步编程的解决方案,具体的概念大家可以去查看相关的资料.传统上处理异步都是以ca ...
- es6面试问题——Promise
话说刚换工作一个月有余,在上家公司干的实在是不开心,然后就出来抱着试试的心态出来面了几家公司,大多数公司问的前端问题也就那么多,其中有个面试问题让我记忆犹新,只因为没有答上来,哈哈! 当时面试官问我怎 ...
随机推荐
- pdf转换成可在线浏览的电子杂志zmaker_pdf
zmaker是曾经国内最流行的电子杂志制作软件,可惜可惜,不过幸好有人给发布了 最新版的 其实主要是2个流程 一个是软件的安装 软件的下载和安装请参考 官方教材 http://bbs.emaghome ...
- selenium webdriver——JS对Input执行输入
直接设置value属性, 此方法主要应对输入框自动补全以及readonly属性的element,sendkeys不稳定 比如: Demo:用JS输入 import org.openqa.seleniu ...
- Spring启动时获取自定义注解的属性值
1.自定义注解 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documen ...
- 【324】Python 库说明(安装&卸载)
参考:Python_安装官方whl包和tar.gz包 参考:Unofficial Windows Binaries for Python Extension Packages 参考:PyPI 参考:直 ...
- Redis 集群二
[Redis 集群二] 集群的客户端 Redis 集群现阶段的一个问题是客户端实现很少. 以下是一些我知道的实现: redis-rb-cluster 是我(@antirez)编写的 Ruby 实现, ...
- ubuntu ufw防火墙
由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了.在 ...
- HTTP Cookie 详解
参考: http://blog.csdn.net/lijing198997/article/details/22174151
- 关于java项目中的.classpath文件:
Classpath是Java中的重要概念: 它描述了Java虚拟机在运行一个Class时在哪些路径中加载要运行的类以及运行的类要用到的类 简单的说,就是像操作系统的path 只不过这个classpat ...
- <!DOCTYPE html>的重要性!
噩梦开始的源头:之前写html或者jsp页面,从来不注意doctype的声明,也不太明白doctype的作用. 直到最近碰到了一个非常奇葩的bug:某一个页面在IE7和8,Chrome,ff等下正常, ...
- 利率计算v5.0--结对--软件工程
利率计算v5.--测试--软件工程 1.任务结对同伴: 名字:王昕明 学号: 博客地址 :http://home.cnblogs.com/u/xinmingwang/ Git : https://gi ...