es6 入坑笔记(四)---异步处理
promise
用于js的异步处理
形式:
1.申明一个promise的对象
let p = new Promise(function(成功时的参数,失败时的参数){
if(。。。。){
成功时的参数(成功时想传的值);
}else{
失败时的参数(失败时想传的值);
}
});
调用then方法
p.then(
//第一个为成功时调用的回调函数
(成功时想传的值)=>(。。。),
/第二个为失败时调用的回调函数
(失败时想传的值)=>(。。。),
);
eg:
let a=1;
let p = new Promise(function(r,rej){
if(a == 1){
r (2**3);
}else{
rej("失败");
}
}); p.then(
(res)=>(console.log(res)),//输出8
(fail)=>(console.log(fail))
);
then的另一种形式(推荐)
p.then(
(res)=>(console.log(res))
).catch((fail)=>(console.log(fail)));
用catch 来捕捉错误时回调
Promise.resolve(参数);
将参数转化为一个promise对象,resolve状态,成功状态
eg:
Promise.resolve('aaa');
等价于
new Promise((suc)=>(
suc('aaa');
));
Promise.reject(参数);
将参数转化为一个promise对象,reject状态,失败状态
Promise.all([p1,p2,p3...]);
将一堆promise对象扔进一个数组内,打包成一个promise对象
只有数组内所有的状态都为成功状态时Promise.all才处于成功状态
Promise.race([p1,p2,p3...]);
将一堆promise对象扔进一个数组内,打包成一个promise对象
只要数组内有一个元素的状态为成功状态时Promise.race处于成功状态
then的连续调用
let a=1;
let b=1;
new Promise((suc,fail)=>{
setTimeout(() =>{
if(a==1){
suc('登陆成功');
}else{
fail('登陆失败!!!');
}
},1000);
}).then((res) => {
console.log("成功登陆,开始获取用户信息!");
return new Promise((suc,fail) =>(
setTimeout(() =>{
if(b==1){
suc({
name:"zjj",
age:18,
sex:"man"
});
}else{
fail('获取失败!!!');
}
},1000)))
}).then((res)=>{
console.log(res);
}).catch(
(fail)=>{
console.log(fail);
}
);
es6 入坑笔记(四)---异步处理的更多相关文章
- es6 入坑笔记(一)---let,const,解构,字符串模板
let 全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < ...
- es6 入坑笔记(三)---数组,对象扩展
数组扩展 循环 arr.foreach(){ //回调函数 function(val,index,arr){ //val:当前读取到的数组的值,index:当前读取道德数组的索引,arr:当前的数组名 ...
- es6 入坑笔记(二)---函数扩展,箭头函数,扩展运算符...
函数扩展 1.函数可以有默认值 function demo( a = 10,b ){} 2.函数可以使用解构 function demo( { a = 0,b = 0 } = {} ){ } 3.函数 ...
- es6 入坑笔记(五)
Symbol 主要用做key或私有变量,Symbol是唯一的不可重复的,也是一个单独的数据类型 定义形式: let demo=Symbol("aaaa"); 1.Symbol不能使 ...
- react 入坑笔记(四) - React 事件绑定和传参
React 事件处理 建议:在了解 js 的 this 取值后食用更佳. 一.react 与 Html 中用法的异同和注意点 html 中的绑定事件的写法: <button onclick=&q ...
- oracle入坑日记<四>表空间
1 表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数 ...
- Linux探索之路1---CentOS入坑笔记整理
前言 上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练.特别是用户权限分配以及vi下的快捷操作.于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令. 作 ...
- 《Scala入坑笔记》缘起 3天就搞了一个 hello world
有小伙伴向我咨询 play framework 的问题,我就想了解一下 play framework ,按照官方的文档,要使用 SBT 安装,就掉进了 SBT 的坑. 第一坑:国外仓库太慢 安装完成后 ...
- react 入坑笔记(三) - Props
React Props props - 参数. 组件类 React.Component 有个 defaultProps 属性,以 class xxx extend React.Component 形式 ...
随机推荐
- Android Weekly Notes Issue #244
Android Weekly Issue #244 February 12th, 2017 Android Weekly Issue #244 本期内容包括: Android Fragments使用教 ...
- java中方法调用在内存中的体现
在java中,方法以及局部变量(即在方法中声明的变量)是放在栈内存上的.当你调用一个方法时,该方法会放在调用栈的栈顶.栈顶的方法是目前正在执行的方法,直到执行完毕才会从栈顶释放.我们知道,栈是一种执行 ...
- OpenStack 学习笔记 (三)
个人网站:臭蛋www.choudan.net 一直苦于不知道如何加入到开源社区参与开发,感受开源社区分布式协作开发和巨神们coding的魅力,特意在网上查了资料,直接指导的很少,还得的靠官网上的文档. ...
- 网络I/O虚拟化,SR-IOV技术
1.简介 网络I/O虚拟化是服务器虚拟化技术的重要组成部分,在服务器虚拟化技术领域,计算虚拟化(如CPU和内存虚拟化)已经日趋成熟,但是,网络I/O虚拟化技术的发展相对比较滞后.当前,主流的网络I/O ...
- 计算机作业(Excel课程表) 物联网 王罗红
- 解决Android sdk manager无法访问google服务器的问题
开发Android应用,使用最广泛的开发工具应该就是ADT了,但是ADT默认只带了Android 4.3(API 18),如果需要安装其他版本的SDK,就需要启动Android SDK Manager ...
- .net framework profiles /.net framework 配置
几年前一篇关于 .net framework client profile http://www.cnblogs.com/zzj8704/archive/2010/05/19/1739130.html ...
- HTTP协议图--HTTP 报文首部之请求行、状态行
1.请求行 举个栗子,下面是一个 HTTP 请求的报文: GET /index.htm HTTP/1.1 Host: sample.com 其中,下面的这行就是请求行, GET /index.htm ...
- 利用Fiddler2和Proxifier分析你用的中国菜刀是否带有后门
为了避免自己辛辛苦苦拿下的站点被一些拿来主义者不费吹灰之力就据为己有,下面来教大家如何检测菜刀有没有留后门. 对于有没有后门这个问题,大牛们会说抓包看一下就行了,那如何抓包呢?有很多软件可以,这里使用 ...
- jQuery——checkbox
全选.全部选 $('#checkAll').click(function(){ $('input[name="subBox"]').prop("checked" ...