您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“如何使用Node.js中的回調(diào)函數(shù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何使用Node.js中的回調(diào)函數(shù)”吧!
Node.js異步編程的直接體現(xiàn)就是回調(diào)函數(shù),回調(diào)函數(shù)在完成任務(wù)后會(huì)被調(diào)用,而Node.js使用了大量的回調(diào)函數(shù),我覺得是否適合用Node.js來講回調(diào)函數(shù)。下面我就來盡力趣講回調(diào)函數(shù)吧~【推薦學(xué)習(xí):《nodejs 教程》】
什么是回調(diào)函數(shù)
你到網(wǎng)上論壇找資源種子,但是你要找的資源找不到,于是你就在論壇發(fā)帖留下郵箱求資源,過幾天,有網(wǎng)友找到資源了,于是給你發(fā)郵件,然后你就收到了資源種子然后去下載資源。在這里,你在論壇留下郵箱就是登記回調(diào)函數(shù),你留下的郵箱就是回調(diào)函數(shù),有人找到資源然后給你發(fā)郵件就是觸發(fā)了回調(diào)函數(shù)的并且調(diào)用回調(diào)函數(shù),你拿到種子然后下載就是響應(yīng)回調(diào)事件。
示例:
function main(info,callback){ console.log("點(diǎn)贊、評(píng)論、轉(zhuǎn)發(fā)了沒?!") callback(info) } function say(msg){ console.log(msg) } main("給了,給了!",say)
這里callback就是回調(diào)函數(shù),當(dāng)然不一定要使用這個(gè)名稱。在函數(shù)體中,先輸出一條信息,然后再調(diào)用callback函數(shù),(callback)回調(diào)函數(shù)使用msg作為自己的參數(shù)。
回調(diào)函數(shù)示例
使用Node.js程序讀取文件有兩種方式。一種是同步操作,只有讀取操作結(jié)束后才能進(jìn)行后面的命令,這種方式稱為阻塞。另一種方式是異步方式,可以一邊讀取文件,一邊執(zhí)行其他命令,這種方式又被稱為非阻塞。
而非阻塞方式基于回調(diào)函數(shù),允許并行執(zhí)行操作。操作結(jié)果會(huì)在事件發(fā)生時(shí)由回調(diào)函數(shù)處理,因此程序無須等待某個(gè)操作的結(jié)果就能執(zhí)行下一步,這樣就大大提高了Node.js的性能,使其可以處理大量的并發(fā)請(qǐng)求。
舉例:
const fs = require("fs") fs.readFile('./foo.txt',function(err,data){ if(err) return console.error(err) console.log(data.toString()) }) console.log("Node.js 程序已經(jīng)執(zhí)行結(jié)束~")
運(yùn)行結(jié)果:
Node.js 程序已經(jīng)執(zhí)行結(jié)束~ 小的們,快給我點(diǎn)贊~
可以發(fā)現(xiàn),在讀取文件時(shí),無論文件有無讀取完畢,都會(huì)執(zhí)行下面的輸出語句。因此會(huì)先顯示程序已經(jīng)結(jié)束的話語,然后才等待文件讀取完畢然后顯示文件內(nèi)容。文件內(nèi)容作為回調(diào)函數(shù)的參數(shù)data返回,這樣就不必等待文件I/O操作完畢再執(zhí)行代碼了。
到此,相信大家對(duì)“如何使用Node.js中的回調(diào)函數(shù)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。