Mat*_*ias 5 javascript callback node.js
我刚刚开始学习 node.js 和 express,在 express.js 网站上的“hello world”示例中有一些让我感到困惑的东西。在示例中,它们指的是回调函数中的服务器变量。
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('App listening at http://%s:%s', host, port);
});
Run Code Online (Sandbox Code Playgroud)
app.listen()在执行回调函数之前是否将值返回给服务器变量?它如何做到这一点以及它是如何工作的?node(和javascript)中的所有回调函数都是一样的吗?
我只想简单解释一下执行过程。
明确地说,我知道回调函数可以访问服务器变量。但是如果app.listen方法在将值返回给服务器变量之前执行回调函数,那是不是意味着当您尝试访问server.adress()时服务器变量仍然不足?那是我不明白的。
app.listen() 在执行回调函数之前是否向服务器变量返回一个值?
对,就是这样。app.listen()类似于普通的 Node.jsserver.listen方法。回调是为服务器分配事件侦听器的快捷方式listening。
您可以使用以下代码执行相同的操作:
var server = app.listen( 3000 );
server.on( "listening", function () {
console.log( "server is listening in port 3000" );
});
Run Code Online (Sandbox Code Playgroud)
它如何做到这一点以及它是如何工作的?这对于节点(和 JavaScript)中的所有回调函数都是一样的吗?
发生这种情况是因为Node.js 中的 IO 事件都是异步运行的(fs模块除外)——也就是说,它们仅在其他同步代码完成运行时才会发生。
这在浏览器 JS 中的工作方式相同 - 如果您同步运行某个 JS 进程,则触发的任何事件(如click、blur等)只会在该事件完成后执行。
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |