2024-05-01|閱讀時間 ‧ 約 23 分鐘

※ 認識非同步概念(二)

    ※ Promise基本介紹

    什麼是 Promise?

    Promise 是 JavaScript 的一個構造函式,用於創建表示非同步操作的物件實例。使用 new Promise() 時,你會創建一個包含非同步操作的實例,這個實例可以透過其繼承的方法如 then(), catch(), 和 finally() 來管理非同步操作的成功、失敗及其後續處理。

    在創建 Promise 時,必須提供一個執行器函數(executor function),這個函數會立即執行並接收兩個參數:resolvereject。這些參數是函數,用於在異步操作成功時調用 resolve,或在操作失敗時調用 reject

    Promise 它具備了 callback 的優點,但透過 .then() 來標明流程,而 .then() 之間可以互相鏈結 (chaining),把之前「一層包一層的 callback」,轉換成 .then() 的串接。

    以下是Promise的基本形式:

    function asyncFunction(value) {
    return new Promise(function(resolve, reject) {
    if(value) {
    resolve(value)//已實現,成功
    }else {
    reject(reason)//有錯誤,已拒絕,失敗
    }
    })
    }

    簡單範例:

    //resolve的結果
    function delay() {
    return new Promise(function(resolve, reject) {
    setTimeout(function() {
    resolve("Hello")
    }, 1000)
    })
    }
    //以下是一個Promise接到resolve的結果就設計成一個子函式(then)後再接到一個值後再印出
    delay().then((res) => console.log(res))//印出"Hello"
    //reject的結果
    function delay() {
    return new Promise(function(resolve, reject) {
    setTimeout(function() {
    reject("Error")
    }, 1000)
    })
    }
    delay().catch((res) => console.log(res))//印出"Error"

    以下是Promise的流程圖示:



    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.