gpt4 book ai didi

JavaScript 和 Node.JS——无法理解为什么回调中的变量未定义

转载 作者:行者123 更新时间:2023-11-30 15:58:38 25 4
gpt4 key购买 nike

<分区>

所以我开始学习 NodeJS 并创建一个简单的 HTTP 服务器,如 Node Beginner 书中所述。我有一个 Router 对象,它包含一个路由 table,它将路径名映射到要调用的函数。这是通过键值对象实现的。

现在,我的 Server 对象有一个 router 成员指向上面提到的对象。 (对于松散耦合,保持 Router 和 Server 分离),以及启动服务器的 start() 方法。如下所示:

Server.prototype.start = function() {
var myRouter = this.router;
http.createServer(function(req, res) {
var path = url.parse(req.url).pathname;
res.write(myRouter.route(path, null));
res.end();
}).listen(80);
};

现在我已经创建了一个 myRouter 变量,它指向 Server 对象的 router 引用,然后在 createServer 函数,使用它的 route() 函数执行路由。此代码有效。但是,如果我省略创建 myRouter 变量部分并直接在 createServer 中执行路由,如下所示:

res.write(this.router.route(path, null));

它说 this.router 是未定义的。我知道这与范围有关,因为提供给 createServer 的函数会在收到请求时稍后执行,但是,我无法理解创建 myRouter 如何解决这个问题。任何帮助将不胜感激。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com