익명 함수로 래핑 된 명명 된 콜백 함수에서 전달 된 리스너를 제거하는 방법이 있습니까?익명 함수로 래핑 된 명명 된 콜백을 제거 하시겠습니까?
업데이트. 아래의보다 완벽한 코드 예제.
여기에 자세한 내용이 나와 있습니다. 명명 된 콜백으로 전달되는 함수가 있습니다.
function read (message, named_callback) {
var named_callback = named_callback || default_callback
, message = message || "Choose: ";
stdout.write(message);
stdin.resume();
stdin.setEncoding('utf8');
stdin.on('data', named_callback);
});
};
하기 전에 모든 named_callback
들 가지고와 사용자 입력 (답) 전달 준비합니다.
answer = answer.trim().toLowerCase();
결국 모든 곳에서 트리밍과 줄 바꾸기가 반복됩니다. 이 단계를 한 곳으로 옮기고 자 콜백에 들어가기 전에 대답을 준비하려고했습니다.
function read (message, named_callback) {
var named_callback = named_callback || default_callback
, message = message || "Choose: ";
stdout.write(message);
stdin.resume();
stdin.setEncoding('utf8');
stdin.on('data', function (answer) {
answer = answer.trim().toLowerCase();
named_callback(answer);
});
};
후 그러나이 제거되지 않는 이벤트 리스너 결과, 프로그램이 너무 많은 청취자와 충돌 할 때까지 그들은 단지 쌓아 : 나는이 썼다.
감사합니다.
감사합니다. 그래서 코드를 업데이트 예, 그것이 있었기 때문에 래핑 함수가 아무런 가치를 추가하지 않은 것처럼 보였습니다. '한번'문제를 해결할 수 있다고 생각합니다. 코드를 다시 작성하려고합니다. ck. 그 동안 청취자를 추적하고 제거하는 다른 방법이 있는지 알고 있습니까? –
@ hearandnow78'once' 메소드가 내 문제를 해결했습니다. 제안 해 주셔서 감사합니다. –