我終於想在編程的這個方面達到一些清晰度,基本上是自學成才的。這與在函數之間傳遞變量有關。也許錯過了javascript編碼 - 變量處理(socket.io示例)
通過下面的代碼,data.roomId在第一個函數(顯然)中不被識別。我可以將函數放入joinRoom函數中,以使其識別data.roomId,但leaveRoom函數如何識別sendHeartbeat?
`io.on('connection', function (socket) {
function sendHeartbeat(){
setTimeout(sendHeartbeat, 8000);
socket.broadcast.to(data.roomId).emit('ping', { beat : 1 });
}
socket.on('joinRoom', function (data) {
socket.join(data.roomId)
setTimeout(sendHeartbeat, 8000);
});
socket.on('leaveRoom', function (data) {
socket.leave(data.roomId)
clearTimeout(sendHeartbeat)
});
});`
sendHeartbeat是'函數(回調)範圍內定義' - 這樣它是在範圍內,因此(如你所說)「確認」 –