2016-07-02 4 views
0

Я пытаюсь создать функцию, которая вернет значение ответа. Однако у меня возникают проблемы с получением этого значения.Получите значение из функции socket.io?

В настоящее время он получает некоторые данные с сервера и сохраняет их в данных. Тем не менее, я хочу сделать это значение более легким, чтобы не иметь, чтобы постоянно включать мой контент в функцию serverAnswer. Возможно ли это сделать?

var serverAnswer = (function() { 
    var answer; 
    socket.on("server answer", function(data){ 
     answer = data.year; 
    }); 
    return function() { 
     alert(answer); 
    }; 
}()); 

serverAnswer(); 
console.log(answer); 

ответ

1

Вы не можете точно сделать это в синхронном образом. Однако вы можете создать функцию, в которой вы хотите, чтобы значение answer и вызывало это из обратного вызова сокета. или даже обратный вызов сокета может быть вашей функцией, где вы хотите использовать значение answer.

function doit(answer){ 
    // do something with answer 
} 

Вы можете сделать это

socket.on("server answer", function(data){ 
    answer = data.year; 
    doit(answer); 
}); 

Или это

socket.on("server answer", doit); 
+0

Вы являетесь легендой сударь. В чем отличие socket.on («server answer», doit); ? –

+0

@factor_za 'doit' на самом деле является той функцией, которую мы передаем в первом случае. мы просто назвали его 'doit' и разместили его снаружи, а затем использовали его ссылку –

+0

отлично. Я использовал первый метод и теперь могу передать это через мою главную функцию. Спасибо! –

Смежные вопросы