如何在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);
});

app.listen()在执行回调函数之前,是否向服务器变量返回值?它如何做到这一点以及如何运作?节点(和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" );
});

它如何做到这一点以及如何运作?节点(和javascript)中的所有回调函数都一样吗?

之所以会发生这种情况,是因为Node.js中的IO事件都是异步运行的fs模块例外)-也就是说,它们只会在其他同步代码运行完毕后才会发生。

这个数据与在浏览器JS -如果你运行一些JS进程同步,触发的事件(如clickblur等)将是一个完成后只执行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章