摘要:如何編寫回調(diào)函數(shù)回調(diào)函數(shù)其實(shí)就是將某個(gè)特定接口的實(shí)現(xiàn)作為參數(shù)傳入目標(biāo)對(duì)象,讓目標(biāo)對(duì)象在適當(dāng)?shù)臅r(shí)候?qū)R進(jìn)行調(diào)用。是測(cè)試的主體,在函數(shù)中,產(chǎn)生一個(gè)對(duì)象,然后調(diào)用其方法,同時(shí)傳入一個(gè)匿名類實(shí)現(xiàn)了接口。
如何編寫回調(diào)函數(shù)?
回調(diào)函數(shù)其實(shí)就是將某個(gè)特定接口的實(shí)現(xiàn)作為參數(shù)傳入目標(biāo)對(duì)象,讓目標(biāo)對(duì)象在適當(dāng)?shù)臅r(shí)候?qū)R進(jìn)行調(diào)用。
Response接口包含了兩個(gè)方法:success和fail,分別需要在請(qǐng)求成功和失敗時(shí)調(diào)用,但是具體這兩個(gè)方法需要做寫什么事情,這在接口的定義中是無從知道的,因?yàn)檫@是根據(jù)每個(gè)發(fā)送請(qǐng)求的主體的具體情況而確定的。
Request是發(fā)送請(qǐng)求類,是執(zhí)行人物的主體,在其send(Response response)方法中,會(huì)接受一個(gè)Response接口的實(shí)現(xiàn),并在請(qǐng)求完成后,根據(jù)請(qǐng)求的結(jié)果調(diào)用Response中相應(yīng)的方法。
CallbackSample是測(cè)試的主體,在main函數(shù)中,產(chǎn)生一個(gè)Request對(duì)象,然后調(diào)用其send方法,同時(shí)傳入一個(gè)匿名類實(shí)現(xiàn)了Response接口。
java/** * Created by findingsea on 3/11/15. */ public interface Response { void success(); void fail(); }
java/** * Created by findingsea on 3/11/15. */ public class Request { public void send(Response response) { System.out.println("Send Request"); response.fail(); } }
java/** * Created by findingsea on 3/11/15. */ public class CallbackSample { public static void main(String[] args) { Request request = new Request(); request.send(new Response() { @Override public void success() { System.out.println("Request Success"); } @Override public void fail() { System.out.println("Request Fail"); } }); } }
以下是輸出:
javaSend Request Request Fail
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64271.html
摘要:事件循環(huán)從回調(diào)隊(duì)列中獲取并將其推入調(diào)用堆棧。執(zhí)行從調(diào)用堆棧中移除從調(diào)用堆棧中移除快速回顧值得注意的是,指定了事件循環(huán)應(yīng)該如何工作,這意味著在技術(shù)上它屬于引擎的職責(zé)范圍,不再僅僅扮演宿主環(huán)境的角色。 此篇是 JavaScript是如何工作的第四篇,其它三篇可以看這里: JavaScript是如何工作的:引擎,運(yùn)行時(shí)和調(diào)用堆棧的概述! JavaScript是如何工作的:深入V8引擎&編寫...
摘要:一個(gè)簡單的轉(zhuǎn)換為的例子我們調(diào)用函數(shù)返回一個(gè)的實(shí)例,在實(shí)例化的過程中進(jìn)行文件的讀取,當(dāng)文件讀取的回調(diào)觸發(fā)式,進(jìn)行狀態(tài)的變更,或者狀態(tài)的變更我們使用來監(jiān)聽,第一個(gè)回調(diào)為的處理,第二個(gè)回調(diào)為的處理。 2018年已經(jīng)到了5月份,node的4.x版本也已經(jīng)停止了維護(hù) 我司的某個(gè)服務(wù)也已經(jīng)切到了8.x,目前正在做koa2.x的遷移 將之前的generator全部替換為async 但是,在替換...
摘要:編寫異步代碼可能是一種不同的體驗(yàn),尤其是對(duì)異步控制流而言?;卣{(diào)函數(shù)的準(zhǔn)則在編寫異步代碼時(shí),要記住的第一個(gè)規(guī)則是在定義回調(diào)時(shí)不要濫用閉包。為回調(diào)創(chuàng)建命名函數(shù),避免使用閉包,并將中間結(jié)果作為參數(shù)傳遞。 本系列文章為《Node.js Design Patterns Second Edition》的原文翻譯和讀書筆記,在GitHub連載更新,同步翻譯版鏈接。 歡迎關(guān)注我的專欄,之后的博文將在專...
摘要:只要在調(diào)用異步函數(shù)時(shí)設(shè)置一個(gè)或多個(gè)回調(diào)函數(shù),函數(shù)就會(huì)在完成時(shí)自動(dòng)調(diào)用回調(diào)函數(shù)。要解決的問題是,如何將回調(diào)方法的參數(shù)從回調(diào)方法中傳遞出來,讓它可以像同步函數(shù)的返回結(jié)果一樣,在回調(diào)函數(shù)以外的控制范圍內(nèi),可以傳遞和復(fù)用。 摘要: 我們知道 JavaScript 自從有了 Generator 之后,就有了各種基于 Generator 封裝的協(xié)程。其中 hprose 中封裝的 Promise 和...
摘要:服務(wù)器每收到一條請(qǐng)求,都會(huì)用新的和對(duì)象觸發(fā)回調(diào)函數(shù)。但不會(huì)在回調(diào)函數(shù)被觸發(fā)之前開始對(duì)請(qǐng)求體的解析。在調(diào)用完請(qǐng)求回調(diào)函數(shù)之后,就要由你負(fù)責(zé)用方法結(jié)束響應(yīng)了見下圖。比較常見的情況是當(dāng)所請(qǐng)求的資源不存在時(shí)返回一個(gè)狀態(tài)碼。 前言 本文將通過一個(gè)todo list前后端分離的小項(xiàng)目來講解如何用Node創(chuàng)建符合RESTful風(fēng)格的API接口。 創(chuàng)建HTTP服務(wù)器 我們先來了解下如何用Node創(chuàng)建H...
閱讀 1690·2021-11-15 11:37
閱讀 3424·2021-09-28 09:44
閱讀 1679·2021-09-07 10:15
閱讀 2802·2021-09-03 10:39
閱讀 2698·2019-08-29 13:20
閱讀 1306·2019-08-29 12:51
閱讀 2215·2019-08-26 13:44
閱讀 2137·2019-08-23 18:02