我在从所述模块内部的函数中访问模块级变量的范围时遇到问题。见下文...
var socketio = require('socket.io');
var socket = socketio.listen();
var myCustomModule = require('./lib/mycustommodule')('http://mysite:8080');
socket.on('connection', function connection(socket) {
socket.emit('message', {data:"test1"}); <====THIS WORKS
socket.on('init', function init(data) {
socket.emit('message', {data:"test1"}); <====THIS WORKS
refreshMyCustomModule();
});
});
var refreshMyCustomModule = function() {
socket.emit('message', {data:"test1"}); <=====THIS DOESN'T WORK
myCustomModule.beginSomeAsyncTask(function(data) { <======THIS DOESN'T WORK
socket.emit('message', {data:"test2"}); <========THIS DOESN'T WORK
});
};
查看上面的示例。当我突然调用我的 refreshMyCustomModule 函数socket
并myCustomModule
变得未定义时。我也尝试过使用它以及设置一个var self = this
.
我在客户端上用 javascript 写了一堆,但是在 node.js 中编码时,范围似乎不同,我就是无法破解这个坚果。