Js (Javascript) 回調的簡單理解

當時學Java的時候不理解什麼叫回調,看了好長一段時間,也沒找到什麼相對簡單的講解。

  1. Java 內因爲不能使用委託(方法當成參數傳遞),所以只能藉助Interface(接口)來實現。在需要回調的地方給一個接口參數,用到的時候,傳接口實例即可(扯遠了)。
  2. Javascript因爲可以使用委託,那麼簡單很多,我就不說得很複雜。回調說白了,就是:我需要返回東西給你,但是我也不知道什麼時候返回給你(異步)
//退款
let Refund = {};

//退款
Refund.done = function (callback) {
    let postData = {
        //TODO
        // orderid: '',
        // openid: '',
    };
    Fetch.postObjData(API_URL.mobile.refundUrl, postData).then((data) => {
        console.log(data);
        //TODO 需要判斷是否成功
        if (typeof callback === "function") {
            callback();
        }
    });
};

這邊方法done需要傳一個參數過來,這個參數是function類型的,然後我就進行了網絡請求(異步),等我網絡請求結束,我就調用這個方法callback();,然後你調用我這個方法的地方,callback也就被調用了。誰調用的?我這邊(Fetch裏面)調用的。

function callback() {
    console.log('被調用成功');
}

Refund.done(callback);

這邊還需要考慮一個問題:就是回調的作用域問題。

流程是:

  1. 我調用你->Refund.done給了你一個方法類型的參數callback(名字隨便取)
  2. 你開始執行,你執行到Fetch裏面,Fetch執行完畢,你需要返回給我東西,怎麼返回,通過我剛剛給你的callback,你執行了callback,那麼就相當與我這邊的callback被執行,因爲他倆就是一個方法對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章