查看“Node.js:函数、回调函数(异步编程)”的源代码
←
Node.js:函数、回调函数(异步编程)
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Node.js教程]] == 函数 == Node.js 中函数的使用与 JavaScript 类似,一个函数可以作为另一个函数的参数。 * 可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。 示例: <syntaxhighlight lang="JavaScript" highlight=""> function say(word) { console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello"); </syntaxhighlight> === 匿名函数 === 匿名函数:可以直接在另一个函数的括号中定义和传递这个函数。 示例: <syntaxhighlight lang="JavaScript" highlight=""> function execute(someFunction, value) { someFunction(value); } execute(function(word){ console.log(word) }, "Hello"); </syntaxhighlight> === 函数传递是如何让HTTP服务器工作的 === 带着这些知识,我们再来看看我们简约而不简单的HTTP服务器: <syntaxhighlight lang="JavaScript" highlight=""> var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888); </syntaxhighlight> 如上:向 createServer 函数传递了一个匿名函数。 用这样的代码也可以达到同样的目的: <syntaxhighlight lang="JavaScript" highlight=""> var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); </syntaxhighlight> == 回调函数(异步编程) == '''Node.js 异步编程的直接体现就是回调'''。 * 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 * Node 使用了大量的回调函数,Node '''所有 API 都支持回调函数'''。 回调函数在完成任务后就会被调用;这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。 * 回调函数一般作为函数的最后一个参数出现。 *: <syntaxhighlight lang="JavaScript" highlight=""> function foo1(name, age, callback) { } function foo2(value, callback1, callback2) { } </syntaxhighlight> === 阻塞代码 === 示例: # 创建一个文件 '''input.txt''' ,内容如下: #: <syntaxhighlight lang="bash" highlight=""> 菜鸟教程官网地址:www.runoob.com </syntaxhighlight> # 创建 '''main.js''' 文件, 代码如下: #: <syntaxhighlight lang="JavaScript" highlight=""> var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程序执行结束!"); </syntaxhighlight> # 以上代码执行结果如下: #: <syntaxhighlight lang="bash" highlight=""> $ node main.js 菜鸟教程官网地址:www.runoob.com 程序执行结束! </syntaxhighlight> === 非阻塞代码 === 示例: # 创建一个文件 '''input.txt''' ,内容如下: #: <syntaxhighlight lang="bash" highlight=""> 菜鸟教程官网地址:www.runoob.com </syntaxhighlight> # 创建 '''main.js''' 文件, 代码如下: #: <syntaxhighlight lang="JavaScript" highlight=""> var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString()); }); console.log("程序执行结束!"); </syntaxhighlight> # 以上代码执行结果如下: #: <syntaxhighlight lang="bash" highlight=""> $ node main.js 程序执行结束! 菜鸟教程官网地址:www.runoob.com </syntaxhighlight> 如上,阻塞是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。
返回至“
Node.js:函数、回调函数(异步编程)
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息