2011-10-10 3 views
1

socket.io/examples/chat/app.js의 코드를 이해하려고합니다. fn()이 71 번과 73 번 라인에서 무슨 뜻인지 설명 할 수는 없습니다. 콜백 함수라고 생각하지만 정의는 어디에 있습니까? app.js에서 다른 함수를 짧게 호출합니까? ...
소켓 객체의 프로토 타입 함수 호출입니까?socket.io chat의 fn() 의미 샘플 코드

[...] 
    socket.on('nickname', function (nick, fn) { 
     if (nicknames[nick]) { 
      fn(true); 
     } else { 
      fn(false); 
      nicknames[nick] = socket.nickname = nick; 
      socket.broadcast.emit('announcement', nick + ' connected'); 
      io.sockets.emit('nicknames', nicknames); 
     } 
    }); 
[...] 

답변

2

fn는 바로 여기, 콜백 함수에 인수로 전달됩니다 자바 스크립트 함수 이후

socket.on('nickname', function (nick, fn) { 
             ^^ 

는 변수에 저장 할 수 있습니다, 객체 - 및 기타 기능에 인수로 전달.

이 특별한 경우에 콜백 함수의 사용는 Socket.IO 워드 프로세서의 "가져 오기 승인"절에서 duscussed됩니다 - 일부 데이터를 사용해 호출이에 대한 응답으로 클라이언트 다시 메시지 를 전송 그 메시지.

+0

네, 그 사실을 알았지 만 그 함수의 실제 몸체가 무엇인지 알아내는 방법 (fn을 의미)은 무엇입니까? 클라이언트가 '닉네임'메시지를 보냅니다. 이 함수 (nick, fn)가 호출되면 다시 호출됩니다. 그러나 다시, 어떤 함수가 fn으로 전달됩니까? ... – gvlax

+0

Ok @ Sidnicious, 나는 그것을 얻었다 고 생각합니다. 사실, ** 링크 (http://socket.io/#how-to-use)에서 ** 데이터 송수신 (승인) 섹션 **에 설명되어 있습니다. – gvlax

+0

@gvlak : 콜백 함수가 정의되었습니다 [여기] (https://github.com/LearnBoost/socket.io/blob/0339e745fd75857b844f46368cc6d85aef295146/lib/namespace.js#L269), namespace.js. – s4y

0

FN 닉네임 이벤트에 내에서 호출되는 다른 함수에 대한 참조 :

단편은 (라인 69-78)이다.

+0

네,하지만 제 문제는 예를 들어 fn (true) 또는 fn (false)입니다. – gvlax

+0

Thanks Jason. 필자의 이해에 따르면'fn (true | false)'는 내 페이지의 [socket.io # how-to-use] 페이지 (http : // socket)에있는 예제에서'fn ('woot'); .io/# how-to-use) – gvlax

0

자바 스크립트에서 함수는 콜백 함수와 함께 인수로 전달할 수 있도록 객체로 처리됩니다.