回調在維基百科中定義為:

在計算機程序設計中,回調函數(shù),是指通過函數(shù)參數(shù)傳遞到其他代碼的,某一塊可執(zhí)行代碼的引用。

其目的是允許底層代碼調用在高層定義的子程序。
舉個例子可能更明白一些:以Android中用retrofit進行網(wǎng)絡請求為例,這個是異步回調的一個例子。
在發(fā)起網(wǎng)絡請求之后,app可以繼續(xù)其他事情,網(wǎng)絡請求的結果一般是通過onResponse與onFailure這兩個方法返回得到??匆幌孪嚓P部分的代碼:

call.enqueue(new Callback<HistoryBean>() { @Override public void onResponse(Call<HistoryBean> call, Response<HistoryBean> response) {
                HistoryBean hb = response.body(); if(hb == null) return;
                showText.append(hb.isError() + ""); for(HistoryBean.ResultsBean rb : hb.getResults()){
                    showText.append(rb.getTitle() + "/n");
                }
            } @Override public void onFailure(Call<HistoryBean> call, Throwable t) {

            }
        });

忽略上面CallBack中的泛型,按照維基百科中的定義,匿名內部類里面的全部代碼可以看成函數(shù)參數(shù)傳遞到其他代碼的,某一塊可執(zhí)行代碼的引用。 onResponse與onFailure這兩個方法就是回調方法。底層的代碼就是已經(jīng)寫好不變的網(wǎng)絡請求部分,高層定義的子程序就是回調,因為具體的實現(xiàn)交給了使用者,所以具備了很高的靈活性。上面就是通過enqueue(Callback callback)這個方法來關聯(lián)起來的。

網(wǎng)友評論