開心檔-軟體開發入門教程網之Node.js 回撥函式
Node.js 非同步程式設計的直接體現就是回撥。
非同步程式設計依託於回撥來實現,但不能說使用了回撥後程式就非同步化了。
回撥函式在完成任務後就會被呼叫,Node 使用了大量的回撥函式,Node 所有 API 都支援回撥函式。
例如,我們可以一邊讀取檔案,一邊執行其他命令,在檔案讀取完成後,我們將檔案內容作為回撥函式的引數返回。這樣在執行程式碼時就沒有阻塞或等待檔案 I/O 操作。這就大大提高了 Node.js 的效能,可以處理大量的併發請求。
回撥函式一般作為函式的最後一個引數出現:
function foo1(name, age, callback) { }function foo2(value, callback1, callback2) { }
建立一個檔案 input.txt ,內容如下:
菜鳥教程官網地址:
建立 main.js 檔案, 程式碼如下:
var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());console.log("程式執行結束!");
以上程式碼執行結果如下:
$ node main.js 菜鳥教程官網地址: 程式執行結束!
建立一個檔案 input.txt ,內容如下:
菜鳥教程官網地址:
建立 main.js 檔案, 程式碼如下:
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString()); });console.log("程式執行結束!");
以上程式碼執行結果如下:
$ node main.js 程式執行結束! 菜鳥教程官網地址:
以上兩個例項我們瞭解了阻塞與非阻塞呼叫的不同。第一個例項在檔案讀取完後才執行程式。 第二個例項我們不需要等待檔案讀取完,這樣就可以在讀取檔案時同時執行接下來的程式碼,大大提高了程式的效能。
因此,阻塞是按順序執行的,而非阻塞是不需要按順序的,所以如果需要處理回撥函式的引數,我們就需要寫在回撥函式內。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026554/viewspace-2934592/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開心檔-Node.js入門篇2Node.js
- Python開發的入門教程(六)-函式Python函式
- JS之回撥函式(callback)JS函式
- C++_中介軟體kafka-回撥函式C++Kafka函式
- 回撥函式函式
- 開心檔之Go教程Go
- 函式指標、回撥函式、動態記憶體分配、檔案操作函式指標記憶體
- 全網最適合入門的物件導向程式設計教程:47 Python函式方法與介面-回撥函式Callback物件程式設計Python函式
- JavaScript 回撥函式JavaScript函式
- JavaScript回撥函式JavaScript函式
- JS—回撥函式JS函式
- 回撥函式(CallBack)函式
- [JS]回撥函式和回撥地獄JS函式
- 函式指標&回撥函式Callback函式指標
- 回撥函式 與 函式閉包函式
- java 回撥函式示例Java函式
- 函式回撥(C++)函式C++
- 回撥函式的作用函式
- Python/OpenCV:回撥函式PythonOpenCV函式
- TLS回撥函式(Note)TLS函式
- 開心檔之python 推導式Python
- C++回撥函式 用法C++函式
- 回撥函式的理解(一)函式
- java回撥函式機制Java函式
- 開心檔之Go 併發Go
- java回撥函式-非同步回撥-簡明講解Java函式非同步
- 【知識點】inline函式、回撥函式、普通函式inline函式
- 開心檔之MySQL 正規表示式MySql
- 開心檔之C++ 過載運算子和過載函式C++函式
- 敏捷開發入門教程敏捷
- setInterval 回撥函式傳引數函式
- js 徹底理解回撥函式JS函式
- 深入理解 JavaScript 回撥函式JavaScript函式
- C++中的回撥函式C++函式
- 函式指標的重要用途——回撥函式函式指標
- JS指令碼載入後執行相應回撥函式JS指令碼函式
- Python技法3:匿名函式、回撥函式和高階函式Python函式
- 開源函式計算平臺 OpenFunction 保姆級入門教程函式Function