Скажем, у меня есть эта функция:Javascript возвращаемое значение из вложенных функций
rest = require('restler');
function authenticate(credentials) {
var accessToken;
rest.post(BaseURL + '/Users/login', { data : credentials })
.on('complete', function(result, response) {
console.log(result.id); // this works fine
accessToken = result.id;
});
return accessToken;
};
Я хочу, чтобы возвращать string
содержащий accessToken
, когда я запускаю это:
var at = authenticate({ "username": "test", "password" : "test" });
console.log('Access Token:', at);
Я получаю Access Token : underfined
Функция сообщения is async. Оператор 'return accessToken;' не дожидается, пока не будет выполнен асинхронный вызов. Таким образом, он возвращает то, что начальное значение accessToken в этот момент. – 3abqari
Вы не можете этого сделать. Когда функция 'authenticate' вернется, обратный вызов еще не выполнен, и он не будет, пока сервер не ответит. Я уверен, что кто-то сможет указать вам некоторые ресурсы здесь, но тем временем попробуйте найти некоторую документацию по асинхронным вызовам и работать с Promises. – spectras