這篇文章跟大家趣講Node.js的回呼函數,透過範例帶大家簡單了解一下回呼函數,希望對大家有幫助!
Node.js非同步程式設計的直接體現就是回呼函數,回呼函數在完成任務後會被調用,而Node.js使用了大量的回呼函數,我覺得是否適合用Node.js來講回調函數。下面我就來盡力趣講回調函數吧~【推薦學習:《nodejs 教學》】
什麼是回呼函數
你到網路論壇找資源種子,但你要找的資源找不到,於是你就在論壇發文留下郵箱求資源,過幾天,有網友找到資源了,於是給你發郵件,然後你就收到了資源種子然後去下載資源。在這裡,你在論壇留下郵箱就是登記回調函數,你留下的郵箱就是回調函數,有人找到資源然後給你發郵件就是觸發了回調函數的並且調用回調函數,你拿到種子然後下載就是響應回調事件。
範例:
function main(info,callback){ console.log("点赞、评论、转发了没?!") callback(info) } function say(msg){ console.log(msg) } main("给了,给了!",say)
這裡callback就是回呼函數,當然不一定要使用這個名稱。在函數體中,先輸出一則訊息,再呼叫callback函數,(callback)回呼函數使用msg作為自己的參數。
回呼函數範例
使用Node.js程式讀取檔案有兩種方式。一種是同步操作,只有在讀取操作結束後才能進行後面的命令,這種方式稱為阻塞。另一種方式是非同步方式,可以一邊讀取文件,一邊執行其他命令,這種方式又被稱為非阻塞。
而非阻塞方式是基於回呼函數,允許並行執行操作。操作結果會在事件發生時由回呼函數處理,因此程式無須等待某個操作的結果就能執行下一步,這樣就大大提高了Node.js的效能,使其可以處理大量的並發請求。
範例:
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 程序已经执行结束~")
運行結果:
Node.js 程序已经执行结束~ 小的们,快给我点赞~
可以發現,在讀取檔案時,無論檔案有無讀取完畢,都會執行下面的輸出語句。因此會先顯示程式已經結束的話語,然後才等待文件讀取完畢然後顯示文件內容。文件內容作為回呼函數的參數data傳回,這樣就不必等待檔案I/O操作完畢再執行程式碼了。
更多程式相關知識,請造訪:程式設計影片! !
以上是趣味講解Node.js中的回呼函數(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!