20250222-.then() 裡的 return 是做什麼用的
20250222-.then() 裡的 return 是做什麼用的
.then() 裡的 return 是做什麼用的?
來 一層一層拆解說明 .then()
中的 return
是在做什麼:
🔁 .then()
裡的 return
是做什麼用的?
✅ 簡單說:
每一個
.then()
都可以傳遞資料給「下一個」.then()
。
而要傳的資料,就是你在return
裡寫的東西。
🔍 我們用你的範例來說明:
1 | fetch(url) |
🧠 一層一層看發生什麼事:
.then() 順序 |
做的事 | return 傳下去的值是什麼? |
---|---|---|
第一層 | 拿到 fetch 的 response |
response.json() (會變成 data ) |
第二層 | 拿到完整 JSON 資料,名為 data |
data.records |
第三層 | 拿到 records 陣列 |
records.location (⚠️小心,records 可能是陣列) |
第四層 | 拿到上一層的 return 值(locations) | 印出結果 |
🔧 小提醒:
1 | return data.records |
→ 是說:「我只要把整個 records
傳給下一層。」
1 | return records.location |
→ 這句會錯,如果 records
是一個陣列,因為陣列是沒有 location
屬性的。
你應該這樣寫:
1 | return records[0].location |
或
1 | return records.map(r => r.location) |
✅ 總結:為什麼要用 return
?
return
是為了 將資料傳給下一層 的.then()
- 如果不寫
return
,下一層.then()
拿到的是undefined
- 每一層都可以「選擇傳什麼資料」給下一層,這就是 Promise chain 的設計