ここで同様の質問をいくつか見ましたが、これに直接関係しているようには見えません。Twitter ストリームを読み込んでおり、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
});
しかし、処理の非同期性に関連していると思われるエラーが発生します。発行する前に処理機能が終了するのを待つように強制するにはどうすればよいですか?