簡體   English   中英

我如何socket.emit()來自函數的數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM