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>
