أحداث إلغاء التسجيل في node.js
-
29-09-2019 - |
سؤال
لنأخذ stdin.on
كمثال. عمليات الاسترجاعات إلى stdin.on
مكدس ، لذلك إذا كتبت (في Coffescript)
stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) -> console.log 'One'
stdin.on 'data', (input) -> console.log 'Two'
ثم في كل مرة أصابني بالعودة إلى المطالبة ، أحصل عليها
One
Two
سؤالي هو ، هل هناك أي طريقة لإزالة/استبدال رد الاتصال بمجرد ربطه؟ أم أن النهج الوحيد لربط رد الاتصال بالوكالة وإدارة الحالة بنفسي؟
المحلول
يمكنك استخدام removeListener(eventType, callback)
لإزالة حدث ، والذي يجب أن يعمل مع جميع أنواع البوابات.
مثال من مستندات API:
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
لذلك ، يجب أن يكون لديك متغير يحمل إشارة إلى رد الاتصال ، لأنه من الواضح أنه من المستحيل معرفة رد الاتصال الذي تريد إزالته.
تعديل
يجب أن يكون شخصًا مثل هذا في CS:
stdin = process.openStdin()
stdin.setEncoding 'utf8'
logger = (input) -> console.log 'One'
stdin.on 'data', logger
stdin.removeListener 'data', logger
stdin.on 'data', (input) -> console.log 'Two'
نرى: http://nodejs.org/docs/latest/api/events.html#emitter.removelistener
نصائح أخرى
أو يمكنك استخدام:
stdin.once
بدلاً من stdin.on
لا تنتمي إلى StackOverflow