iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
Modern Web

JavaScript 筆記 2 版系列 第 24

JavaScript Day24 - Promise(1)

  • 分享至 

  • xImage
  •  

ES6:Promise

  • Promise:代表一個即將成功或失敗的非同步操作
  • 會有這幾狀態:
    • 擱置 (pending):初始狀態
    • 實現 (fulfilled):表示操作成功,會實行 resolve
    • 拒絕 (rejected):表示操作失敗,會實行 reject
  • 成功後續可以用 then 繼續
  • fetch() 就是依照 Promise 包起來的一組 API
new Promise(function(resolve, reject) { ... } );
const newP = new Promise((resolve, reject)=>{
    // 想執行的非同步操作
    if (true) {
        resolve(status); // 成功時回傳
    } else {
        reject(status); // 失敗時回傳
}).then((data)=>{
    // 成功時用 then 繼續處理
}).catch((error)=>{
    // 失敗時用 catch 繼續處理
})
const newP = new Promise((resolve, reject)=>{
    setTimeout(()=>{
        if(Math.random() > 0.5){
            resolve('success')
        }
        else{
            reject('error')
        }
    }, 2000)
}).then((data)=>{
    console.log(data) 
}).catch((error)=>{
    console.log(error)
})

參考資料

MDN 使用 Promise
MDN Promise
鐵人賽:使用 Promise 處理非同步
JavaScript Promise 全介紹
JS 原力覺醒 Day14 - 一生懸命的約定:Promise
JavaScript基本功修練:Day25 - Promise
從Promise開始的JavaScript異步生活
Promise 與 Opendata
JavaScript 同步延遲 ( Promise + setTimeout )
JavaScript | 從Promise開始承諾的部落格生活

(資料很多,可以多參考理解消化一下)

次回

再繼續討論 Promise 囉


上一篇
JavaScript Day23 - 條件(三元)運算子
下一篇
JavaScript Day25 - Promise(2)
系列文
JavaScript 筆記 2 版31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言