promise使用方法
代码报错会走向失败时的回调
let p = new Promise((resolve, reject) => {
throw new Error("我错了"); //会失败
})
p.then((data) => {
console.log(data)
}, (err) => {
console.log(err) // 执行这个方法
})
执行reject会走向失败时的回调
let p = new Promise((resolve, reject) => {
reject("我错了") //会失败
})
p.then((data) => {
console.log(data)
}, (err) => {
console.log(err) // 执行这个方法
})
执行resolve会执行成功时的回调
let p = new Promise((resolve, reject) => {
resolve("我对了") // 会成功
})
p.then((data) => {
console.log(data) // 执行此方法
}, (err) => {
console.log(err)
})
不执行的情况
let p = new Promise((resolve, reject) => {
console.log("不知道");
})
p.then((data) => {
console.log(data) // 不执行
}, (err) => {
console.log(err) // 不执行
})
链式调用可以返回普通值
let p = new Promise((resolve, reject) => {
resolve("执行1")
})
p.then((data) => {
return "执行2"
}).then((data) => {
return "执行3"
}).then((data) => {
console.log(data) //执行3
})
链式调用可以返回promise
let p = new Promise((resolve, reject) => {
resolve("执行1")
})
p.then((data) => {
return new Promise((resolve, rejext) => {resolve("执行2")})
}).then((data) => {
return new Promise((resolve, rejext) => {resolve("执行3")})
}).then((data) => {
console.log(data) //执行3
})
链式调用也可以不返回任何值直接到达下一步
let p = new Promise((resolve, reject) => {
resolve("执行1")
})
p.then((data) => {
// 跳过我吧!
}).then((data) => {
return new Promise((resolve, rejext) => {resolve("执行3")})
}).then((data) => {
console.log(data) //执行3
})
手写一个promise:https://github.com/wuxianqiang/promise
promise使用方法的更多相关文章
- js回调地域 和 用promise解决方法
回调地狱: function3({cb3()}){ function2({cb2(cb3)}){ //cb2触发了cb3,并传值 function1({cb1(cb2)}){ //cb1触发了cb2, ...
- [转载]es6 Promise.resolve()方法
es6 Promise.resolve()方法 2018-01-27 22:29:06 ixygj197875 阅读数 16925更多 分类专栏: ES6标准入门 (阮一峰) ES6标准入门 Pr ...
- es6 Promise.reject()方法
es6 Promise.reject()方法:https://blog.csdn.net/ixygj197875/article/details/79188195
- 如何使用 js 实现一个 Promise.all 方法 PromiseAll
如何使用 js 实现一个 Promise.all 方法 PromiseAll Promise.all PromiseAll https://developer.mozilla.org/en-US/do ...
- promise.all方法合并请求接口的两个值
function promise1 = new Promise((resolve,reject)=>{ return result1 }) function promise2 = new Pro ...
- ES6中的Promise使用方法与总结
在javascript中,代码是单线程执行的,对于一些比较耗时的IO操作,都是通过异步回调函数来实现的. 但是这样会存在一个问题,当下一个的操作需要上一个操作的结果时,我们只能把代码嵌到上一个操作的回 ...
- Promise.then方法的执行顺序例题分析
1. 当Promise对象作为resolve的参数时 const p = Promise.resolve(); const p1 = Promise.resolve(p); //就是p const p ...
- 实现一个promise.all方法
思路: 1:首先明白all的用法 2:promise.all可以接受一个由promise数组作为参数,并且返回一个promise实例, 3:promise.all([a,b,c...]).then方法 ...
- Promise (2) 基本方法
"I'm Captain Jack Sparrow" 加勒比海盗5上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...
随机推荐
- 记一次lvs-tunnel模式的故障分析(7)
一.测试环境 类型 IP 负载均衡器 eth0:10.20.73.20 VIP eth0:0 10.20.73.29 后端真实机 10.0.0.7(web01).10.0.0.9(web02) ...
- Zabbix实战-简易教程(6)--Server端高可用
3.4 server前端高可用 至此,单台Zabbix server环境已经搭建完成,为了达到高可用效果,我们需要通过2台服务器之间通过HA软件进行探测,一旦检测到主的server挂掉后,从的s ...
- 从头开始基于Maven搭建SpringMVC+Mybatis项目(3)
接上文内容,本节介绍基于Mybatis的查询和分页功能,并展示一个自定义的分页标签,可重复使用以简化JSP页面的开发. 从头阅读传送门 在上一节中,我们已经使用Maven搭建好了项目的基础结构,包括一 ...
- ajax中url赋json格式的值时发生中文乱码的相关问题
具体流程:转入到jsp界面时会加载ajax,ajax转到url时传带hide在jsp界面的值titleString,其来源见下面的代码. String title=new String("\ ...
- linux(七)之linux系统中查找文件
前面介绍一篇文章介绍了关于vi编辑器的使用,感觉是不是那么多的命令怎么记得住呀,小编也是这样让认为的,但是慢慢的发现,其实还是很有意思的.正所谓熟能生巧多练习,找到其中的规律就ok了.今天看到一句话让 ...
- CTF---Web入门第十一题 PHP大法
PHP大法分值:20 来源: DUTCTF 难度:中 参与人数:8205人 Get Flag:2923人 答题人数:3042人 解题通过率:96% 注意备份文件 解题链接: http://ctf5.s ...
- Shortest path of the king
必须要抄袭一下这个代码 The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose h ...
- linux下各文件夹的结构说明及用途介绍
linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /ho ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- [国嵌笔记][011][Linux密码破解]
破解步骤 1.在系统启动时进入grub选项菜单 2.在grub选项菜单中按e进入编辑模式 3.编辑kernel行,添加 /init 1 (表示进入单用户启动模式,在单用户启动模式中不会要求输入密码) ...