self.test()
内未触发http.createServer()
:
App.prototype.createServer = function(){
var self = this;
var s = http.createServer(function(req,res){
self.test(); // THIS DOESN`T WORK.
req.addListener('end',function(){
res.writeHead(200,{'Content-Type' : 'application/x-javascript'});
self.test(); // THIS DOESN`T WORK.
});
});
self.test(); // THIS WORKS.
return s;
};
App.prototype.test = function() {
console.log('test')
};
如果我将其移出http.createServer()
则可行。为什么是这样?
this
存储在self
中,这样可以避免丢失上下文。我在这里失踪了什么?
如有必要,我可以提供额外的代码和更多功能(self.init
等)。
实例:
new App({
port: 8000
});
初始化:
function App(options){
if (! (this instanceof arguments.callee)) {
return new arguments.callee(arguments);
}
var self = this;
self.settings = {
port : options.port
}
self.init();
};
App.prototype.init = function() {
var self = this;
self.server = self.createServer();
self.server.listen(self.settings.port);
};
答案 0 :(得分:1)
req
只有在拥有正文时才会发出end
个事件。 GET
次请求不会发出请求,但会POST
。
此外,您应该调用listen将服务器绑定到套接字。你是如何向服务器发出请求的?