я пытаюсь получить простое значение с моего сервера узла следующим образом:возвращаемого значения из двойной вложенной функции
getNodeServerValue = function() {
return io.socket.emit('server-Query',
function(data) {
console.log('data is now: ' + data); // works fine!
return (data);
}
);
}
и я хочу, чтобы иметь возможность получить значение, как это:
var myReturnedValue = getNodeServerValue();
, но receivedValue содержит функцию, а не возвращаемое значение. и getNodeServerValue()() тоже не работает.
Я попытался вернуть переменную, setTimeout, clearTimeout и т. Д. Без успеха из-за асинхронного характера jScript.
этот пример свободно на основе «Отправка и получение данных (подтверждения приема» пример в socket.io docs.
ищет here и here не помог мне, так как мои требования двойной вложенной, а также я должен назвать getNodeServerValue с переменной.
я уверен, что это простой вопрос, поэтому, пожалуйста, не вниз голосовать меня без объяснения причин.
большое спасибо.
вы не можете вернуть данные, потому что он не будет доступен к моменту возвращения вашей функции. Вам нужно использовать обратные вызовы: http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call – juvian
Вы должны использовать обещания. –