[英]How do I socket.emit() data that is coming from a function?
Node.js-Socket.io
如果是字符串或硬編碼的變量,我可以將數據從服務器傳遞到客戶端,就可以了:
var greeting = 'hello';
socket.emit('greeting', greeting);
但是,當數據來自某個函數時,它將不再起作用:
function search() {
var greeting = 'hello';
}
search();
socket.emit('greeting', greeting);
編輯:
讓我分享更多代碼:(請注意,結果的console.log有效,顯示JSON數據,但是發出顯示為null)。
io.sockets.on('connection', function (socket) {
socket.on('user location', function(content) {
fetch();
socket.emit('results', fetch());
});
});
function fetch() {
yelp.search({term: "food", location: location, limit: 1}, function(error, data) {
var results = data.businesses;
console.log(results); // THIS WORKS
return results;
});
}
您的變量未在函數外部定義。
這應該工作:
var greeting;
function search() {
greeting = 'hello';
}
search();
socket.emit('greeting', greeting);
或者,您可以使用函數的返回值,這種返回值要優雅一些:
function search() {
var greeting = 'hello';
return greeting;
}
socket.emit('greeting', search());
為了進一步了解可變范圍,我可以推薦“您不知道JS”系列 。
做這個:-
io.sockets.on('connection', function (socket) {
socket.on('user location', function(content) {
fetch(function(data){
socket.emit('results', data);
});
});
});
function fetch(callback) {
yelp.search({term: "food", location: location, limit: 1}, function(error, data) {
var results = data.businesses;
console.log(results); // THIS WORKS
callback(results);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.