1) then方法
![]()
2)、then方法的参数
p.then(第一个参数是成功的回调函数,第二个参数是失败的回调函数);
<script>
const p = new Promise((resolve, reject)=> {
// 通过调用resolve, 传递参数, 改变 当前promise对象的 结果
resolve('成功的结果')
//reject('失败的结果')
});
// then方法函数
// 参数
// 1. 是一个成功的回调函数
// 2. 是一个失败的回调函数
// 返回值: 是一个promise对象
p.then(()=>{
// 当promise的状态是fulfilled时, 执行
console.log('成功时调用')
}, () => {
// 当promise的状态是rejected时, 执行
console.log('失败时调用')
});
console.dir(p)
</script>
![]()
3)、通过调用resolve, 传递参数, 改变 当前promise对象的结果
<script>
const p = new Promise((resolve, reject)=> {
// 通过调用resolve, 传递参数, 改变 当前promise对象的 结果
resolve('成功的结果')
//reject('失败的结果')
});
// then方法函数
// 参数
// 1. 是一个成功的回调函数
// 2. 是一个失败的回调函数
// 返回值: 是一个promise对象
//调用then方法
//value 值
//reason 理由
p.then((value)=>{
// 当promise的状态是fulfilled时, 执行
console.log('成功时调用'+value)
}, (reason) => {
// 当promise的状态是rejected时, 执行
console.log('失败时调用'+reason)
});
console.dir(p)
</script>
![]()
4)、then方法返回一个新的promise实例, 状态是pending
![]()
5)、promise的状态不改变, 不会执行then里的方法
<script>
// 如果promise的状态不改变, then里的方法不会执行
new Promise((resolve, reject) => {
}).then((value) => {
console.log('成功')
}, (reason) => {
console.log('失败')
});
</script>
![]()
6)、在then方法中, 通过return将返回的promise实例改为fulfilled状态
<script>
// 如果promise的状态不改变, then里的方法不会执行
const p = new Promise((resolve, reject) => {
resolve()
})
const t = p.then((value) => {
console.log('成功')
// 使用return可以将t实例的状态改成fulfilled
return 123
}, (reason) => {
console.log('失败')
})
t.then((value) => {
console.log('成功2', value)
}, (reason) => {
console.log('失败')
})
</script>
![]()
7)、总结:
-
如果promise的状态不改变, then里的方法不会执行
-
使用return可以将t实例的状态改成fulfilled
8)、如果在then方法中, 出现代码错误, 会将返回的promise实例改为rejected状态
<script>
// 如果promise的状态不改变, then里的方法不会执行
const p = new Promise((resolve, reject) => {
resolve()
})
const t = p.then((value) => {
console.log('成功')
// 使用return可以将t实例的状态改成fulfilled
//return 123
// 如果这里的代码出错, 会将t实例的状态改成rejected
console.log(a)
}, (reason) => {
console.log('失败')
})
t.then((value) => {
console.log('成功2', value)
}, (reason) => {
console.log('失败', reason)
})
</script>
![]()