javascript - 停止从请求库监听完成事件
问题描述
目前,我有以下nodejs代码
'use strict';
const request = require('request');
var stream;
function connect() {
stream = request({
url: 'https://cloud-sse.xxx.com/stable/stocksUS?token=YOUR_TOKEN&symbols=spy',
headers: {
'Content-Type': 'text/event-stream'
}
})
}
stream.on('complete', () => {
console.log("Reconnecting");
connect();
});
在某些时候,我想停止收听完成事件。
我可以知道,实现这一目标的正确方法是什么?
解决方案
您可以使用removeListener(),但必须避免使用匿名函数(请阅读此处)。
例子:
'use strict';
const request = require('request');
var stream;
function connectHandler()
{
console.log("Reconnecting");
stream = request({
url: 'https://cloud-sse.xxx.com/stable/stocksUS?token=YOUR_TOKEN&symbols=spy',
headers: {
'Content-Type': 'text/event-stream'
}
});
}
stream.on('complete', connectHandler);
稍后您可以在要删除侦听器时执行此操作:
stream.removeListener('complete', connectHandler);
如果您不介意删除complete
事件的所有侦听器,您可以随时执行
stream.removeAllListeners('complete');