小編給大家分享一下Nodejs中callback回調(diào)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司是專業(yè)的新田網(wǎng)站建設(shè)公司,新田接單;提供成都網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新田網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
什么是callback
? 很顯然,字面意思就是回調(diào)
那為什么在Node中需要回調(diào)操作呢?了解過Node的同學(xué)可能會(huì)知道,就是為處理異步操作的結(jié)果。
下面就是針對(duì)這個(gè)問題來詳細(xì)說一下:
在說異步操作的callback
回調(diào)之前,我們先看一下同步的操作模式:
function processData () { var data = fetchData (); data += 1; return data; }
這種同步模式一般情況下可以正常工作,在其他開發(fā)環(huán)境下這種操作也是很典型的。然后可以明顯的看到fectData
方法如果在加載數(shù)據(jù)的時(shí)候很耗時(shí),就會(huì)造成在數(shù)據(jù)同步加載完成之前整個(gè)程序阻塞的情況。
Node.js是一個(gè)異步的操作處理的平臺(tái),其使用callback
回調(diào)的形式將不會(huì)被類似于文件I/O操作等阻塞。一個(gè)回調(diào)函數(shù)就是在一個(gè)給定的任務(wù)執(zhí)行完成之后執(zhí)行的函數(shù);這種方式可以避免一些阻塞的情況,同時(shí)允許其他的代碼繼續(xù)執(zhí)行。
我們使用Node.js的回調(diào)的形式去處理上面的同步操作fetchData
耗時(shí)的情況:
function processData (callback) { fetchData(function (err, data) { if (err) { console.log("An error has occurred. Abort everything!"); return callback(err); } data += 1; callback(data); }); }
一開始看的話,確實(shí)會(huì)覺得有些復(fù)雜,不太容易理解,但是確實(shí)很重要,因?yàn)榛卣{(diào)處理異步操作是Node.js的基礎(chǔ)。
callback
回調(diào)的意思就是:你的異步操作完成之后,你就執(zhí)行我的callback
回調(diào)里面的內(nèi)容。
Node.js這種回調(diào)處理異步操作的形式允許我們盡可能多的處理并發(fā)操作(操作類似于IO操作)
舉個(gè)例子:
在一個(gè)web服務(wù)上,前面有幾個(gè)請(qǐng)求,由于某種原因阻塞了,同時(shí)之后還會(huì)有成百上千的請(qǐng)求正在發(fā)出;
Node.js會(huì)如何處理這種異步阻塞的情況呢?
其會(huì)執(zhí)行異步的執(zhí)行阻塞查詢,使之后的查詢請(qǐng)求可以正常工作,而不是說等待前面的阻塞請(qǐng)求結(jié)束之后,才去處理之后的請(qǐng)求。
下面是是使用異步函數(shù)的典型格式:
function asyncOperation ( a, b, c, callback ) { // ... lots of hard work ... if ( /* an error occurs */ ) { return callback(new Error("An error has occurred")); } // ... more work ... callback(null, d, e, f); } asyncOperation ( params.., function ( err, returnValues.. ) { //This code gets run after the async operation gets run });
callback
一般是異步函數(shù)的做后一個(gè)參數(shù),當(dāng)異步操作結(jié)束之后,去調(diào)用這個(gè)callback
。
一般情況下,callback
的第一個(gè)參數(shù)是error
如果異步操作遇到了錯(cuò)誤,就會(huì)去調(diào)用callback
,第一個(gè)參數(shù)是一個(gè)Error
對(duì)象;反之,第一個(gè)error
為null
,其他參數(shù)正常返回。
以上是“Nodejs中callback回調(diào)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:Nodejs中callback回調(diào)的示例分析
文章轉(zhuǎn)載:http://redsoil1982.com.cn/article32/gdospc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、品牌網(wǎng)站制作、虛擬主機(jī)、定制開發(fā)、軟件開發(fā)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)