У меня есть конечная точка API, которая выполняет функцию, которая, в свою очередь, прослушивает некоторые события через веб-сокет и затем возвращает ответ через обратный вызов конечной точке API, поэтому конечная точка может ответить этим объектом назапрос http.
Иногда я получаю только одно событие, иногда я получаю два события от слушателя.Когда появляется только первое событие, у меня нет проблем.Поскольку второе событие имеет приоритет, я использую setTimeout
для его ожидания, если оно все еще появляется.
Проблема заключается в том, что при появлении второго события моя конечная точка API отвечает своим объектом, но потомэто падает.Я полагаю, это как-то связано со вторым обратным вызовом, и я не знаю, как с этим справиться.Вот как структурирован код:
app.get('/api/myendpoint', function(req, res) {
myVar_1 = req.query.myvar1;
myVar_2 = req.query.myvar2;
myFunction(myVar_1, myVar_2, function(data, error) {
if (!error) res.json(data);
else res.json({"error": String(error)});
});
});
function myFunction(myVar_1, myVar_2, callback){
listenOnSocket.someEvent(myVar_1,
function(error, event) {
if (error) callback(null, error);
else setTimeout(function() {callback(event, null);}, 6000);
}
);
listenOnSocket.someEvent(myVar_2,
function(error, event) {
if (!error) callback(event, null);
else callback(null, error);
}
);
};
Вот как выглядят мои ошибки:
Ошибка [ERR_HTTP_HEADERS_SENT]: Невозможно установить заголовки после их отправки клиенту