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 入坑笔记(四)---异步处理的更多相关文章

  1. es6 入坑笔记(一)---let,const,解构,字符串模板

    let  全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < ...

  2. es6 入坑笔记(三)---数组,对象扩展

    数组扩展 循环 arr.foreach(){ //回调函数 function(val,index,arr){ //val:当前读取到的数组的值,index:当前读取道德数组的索引,arr:当前的数组名 ...

  3. es6 入坑笔记(二)---函数扩展,箭头函数,扩展运算符...

    函数扩展 1.函数可以有默认值 function demo( a = 10,b ){} 2.函数可以使用解构 function demo( { a = 0,b = 0 } = {} ){ } 3.函数 ...

  4. es6 入坑笔记(五)

    Symbol 主要用做key或私有变量,Symbol是唯一的不可重复的,也是一个单独的数据类型 定义形式: let demo=Symbol("aaaa"); 1.Symbol不能使 ...

  5. react 入坑笔记(四) - React 事件绑定和传参

    React 事件处理 建议:在了解 js 的 this 取值后食用更佳. 一.react 与 Html 中用法的异同和注意点 html 中的绑定事件的写法: <button onclick=&q ...

  6. oracle入坑日记<四>表空间

    1   表空间是什么 1.1.数据表看做的货品,表空间就是存放货品的仓库.SQLserver 用户可以把表空间看做 SQLserver 中的数据库. 1.2.引用[日记二]的总结来解释表空间. 一个数 ...

  7. Linux探索之路1---CentOS入坑笔记整理

    前言 上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练.特别是用户权限分配以及vi下的快捷操作.于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令. 作 ...

  8. 《Scala入坑笔记》缘起 3天就搞了一个 hello world

    有小伙伴向我咨询 play framework 的问题,我就想了解一下 play framework ,按照官方的文档,要使用 SBT 安装,就掉进了 SBT 的坑. 第一坑:国外仓库太慢 安装完成后 ...

  9. react 入坑笔记(三) - Props

    React Props props - 参数. 组件类 React.Component 有个 defaultProps 属性,以 class xxx extend React.Component 形式 ...

随机推荐

  1. RN 解决CFBundleIdentifier", Does Not Exist

    mac环境下,在命令行中run-ios构建时报错:CFBundleIdentifier", Does Not Exist 打开XCode,进入.xcodeproj文件,运行,编译时报错:'b ...

  2. Effective C++ Notes

    Item 07 : 为多态基类声明virtual析构函数 #include <iostream> using namespace std; class Base { public: Bas ...

  3. Python学习---Django的新工程设置模板

    该模板完全可以在创建好新工程后进行部分代码替换 创建app01的  python startapp app01   创建static子目录 settings.py """ ...

  4. 4.GlusterFS 常见故障处理

    一般硬盘也要备用几块,因为随着发展,可能这些型号的硬盘不好买到了,一般的事故不会在开始一两年出,在硬件老化的时候出故障的频率高. 4.1 硬盘故障 如果底层做了 RAID 配置,有硬件故障,直接更换硬 ...

  5. Visual Studio Code (vscode)编译C++

    Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮.智能代码补全.自定义热键.括号匹配.代码片段. ...

  6. [BZOJ 1972][Sdoi2010]猪国杀

    1972: [Sdoi2010]猪国杀 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 364  Solved: 204[Submit][Status][D ...

  7. 一次失败的尝试hdfs的java客户端编写(在linux下使用eclipse)

    一次失败的尝试hdfs的java客户端编写(在linux下使用eclipse) 给centOS安装图形界面 GNOME桌面环境 https://blog.csdn.net/wh211212/artic ...

  8. 寒假关于计算机课程的学习计划(第二次作业<二>)

    由于自己刚从紧张的高中学习中解脱出来,进入大学学习意识不够重视,导致学业与别人相差较大,特别是C语言,所以打算寒假主要先补一补C语言.自己在网上查找了很多资料,包括浙江大学翁凯老师在网易云课堂讲的&l ...

  9. scala集合与数据结构

    1.数据结构特点 Scala同时支持可变集合和不可变集合,不可变集合从不可变,可以安全的并发访问. 两个主要的包: 不可变集合:scala.collection.immutable 可变集合: sca ...

  10. android中反射技术使用实例

    在计算机科学领域.反射是指一类应用,它们能够自描写叙述和自控制.也就是说,这类应用通过採用某种机制来实现对自己行为的描写叙述(self-representation)和监測(examination), ...