2025-02-23-自己驗證 Promise 還沒處理完畢

2025-02-23-自己驗證 Promise 還沒處理完畢

「自己驗證 Promise 還沒處理完畢」而不依賴 Chrome DevTools 點開來看,可以用下列幾種方式:


✅ 方法 1:用 setTimeout 觀察 Promise 是否完成

1
2
3
4
5
6
const promise = response.json()
console.log('馬上印出 promise:', promise)

setTimeout(() => {
console.log('一秒後再看 promise:', promise)
}, 1000)

結果說明:

  • 第一行會印出 Promise {<pending>}

  • 過一秒後,第二個 console.log 會印出:

    • Promise {<fulfilled>: {…}}(已完成)
    • Promise {<rejected>: error}(錯誤)

✅ 方法 2:用 .then() 來驗證

這是最直接、最可靠的做法:

1
2
3
4
5
6
const promise = response.json()
console.log('馬上印出 promise:', promise)

promise.then(data => {
console.log('✅ Promise 完成,取得資料:', data)
})

結果:

  • console.log 會先印出 Promise。
  • 然後當資料真的回來時(非同步完成),才會印出 data

✅ 方法 3:用 Promise.prototype.finally() 確認是否完成

1
2
3
4
5
6
7
8
9
10
11
12
const promise = response.json()

promise
.then(data => {
console.log('✔️ 取得資料:', data)
})
.catch(error => {
console.error('❌ 發生錯誤:', error)
})
.finally(() => {
console.log('📦 Promise 處理完畢(不管成功或失敗)')
})

總結表格:

方法 驗證方式
setTimeout 比較「剛建立時」和「一段時間後」的 Promise 狀態
.then() 只有 Promise 完成時才會執行
.finally() 不管成功或錯誤都會執行,用來確認「處理完了」