上記のモジュール内の関数内からモジュール レベル変数のスコープにアクセスする際に問題が発生しています。下記参照...
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 でコーディングすると、スコープが異なるように見え、このナットをクラックすることはできません。