Я видел некоторые подобные вопросы здесь, но ни один из них, похоже, напрямую не связан с этим. Я читаю поток щебета и используя Socket.io испускать его следующим образом:как заставить функцию асинхронного ожидания ждать до конца
stream.on('data', function (data) {
var geo=false,latitude,longitude;
if(data.geo!=null){
geo = true;
latitude = data.geo.coordinates[0];
longitude = data.geo.coordinates[1];
}
io.sockets.volatile.emit('tweets', {
user: data.user.screen_name,
text: data.text,
geo : geo,
latitude: latitude,
longitude: longitude,
});
});
И я хочу, чтобы добавить некоторую обработку данных, прежде чем он получает выбрасываются в гнездах. Код для обработки является:
var sentiment;
sentiment(data.text, function (err, result) {
sentiment = result.score;
});
И я хочу, чтобы излучать его как:
io.sockets.volatile.emit('tweets', {
user: data.user.screen_name,
text: data.text,
geo : geo,
latitude: latitude,
longitude: longitude,
sentiment: sentiment
});
Но я получаю ошибки, которые я думаю, связаны с асинхронным характером обработки. Как я могу принудить его дождаться завершения обработки функции перед выпуском?
Вы не можете сделать его ждать, но вы можете переместить 'вызов io.sockets.volatile.emit' функции в обратный вызов, который вы передаете' настроения '. –
Спасибо, я пробовал это, но получаю сообщение об ошибке: events.js: 74 throw TypeError (событие «Неоткрытый, неуказанный» «событие.»); ^ ТипError: Непредвиден, неопределенное событие "error". – babbaggeii