09 promise then
2024-10-09 13:47:13
then() 方法返回一个 Promise
链式调用:then里面回调函数(成功回调和失败回调),凡事这两个回调函数里面抛出错误或者返回一个已经是拒绝状态的 Promise。
那么 then 返回的 Promise 对象将是rejected状态,走下一个then里面的失败回调函数
catch() 方法返回一个Promise,并且处理拒绝的情况。它的行为与调用
Promise.prototype.then(undefined, onRejected)
相同try-catch
有catch穿透的效果
new Promise((resolve, reject) => {
resolve(1)
}).then(data => {
console.log(data)
return 2 }).then(data => {
console.log(data);
return Promise.reject(20) //一旦promise变为rejected直接走catch,不是一次性到最后的catch ,每一个then里面没有写失败回调函数,但是默认写了reason=>{throw reason}
//或者 resaon=>Promise.reject(reason) }).then(data => {
console.log(data)
}).catch(err => {
console.log(err)
})
//1 2 20
then两个回调函数
then两个回调函数,上一个then的promise状态变为rejected 状态,就走临近下一个then的失败回调函数,不会直接调到最后一个
//
new Promise((resolve, reject) => {
resolve(1)
})
.then(data => {
console.log(data)
return Promise.reject(20) }, err => {
console.log(err)
return 3
}) .then(data => {
console.log(data); }, err => {
console.log(err);
return 3 }) .then(data => {
console.log(data); }, err => {
console.log(err); })
//1 20 3
then链式调用里面含有异步操作
new Promise((resolve, reject) => {
resolve(1)
}).then(data => {
console.log(data)
return 2
}).then(data => {
console.log(data)
// then链式调用,如果里面有异步,需要返回新的promise对象,不然下一个then拿不到这个异步操作的结果
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(3)
}, 1000); })
/* 异步操作直接写,下一个then的data就是默认值undefined。拿不到异步操作的结果
setTimeout(() => {
return 10
}, 1000);
*/
}).then(data => {
console.log(data)
})
中断promise链
return new Promise(()=>{})
最新文章
- Ubuntu 14.04下搜狗输入法崩溃重启
- 【转】MYSQL入门学习之十一:触发器的基本操作
- EasyUI-标签(Tabs)用法
- nyoj 1058部分和问题(DFS)
- myBatis出现Mapped Statements collection already contains value for
- Server.MapPath()获取绝对路径
- SqlServer中输出错误消息
- 工时统计的sql练习--包含时间处理
- VS代码生成工具ReSharper使用手册:配置快捷键
- r语言之生成随机序列,随机数生成函数及用法
- Zab: A simple totally ordered broadcast protocol(译)
- Python--Pycharm backup_ver1.py 控制台一直Backup FAILED
- Validation of viewstate MAC failed 解决办法
- 关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js
- python小白——进阶之路——day3天-———容器类型数据+Number类型强制类型转换
- 51nod--1069 Nim 游戏(博弈论)
- 三、activiti工作流-流程设计工具
- Linux(centos)系统各个目录的作用详解 推荐
- goaccess
- shell script中read的用法