Путаница в области анонимных функций - PullRequest
1 голос
/ 08 июня 2011

Как я могу присвоить значения внутри анонимной функции глобальным переменным или переменным вне области видимости. Например, пример ниже. console.log(rows) возвращает правильные данные, в то время как console.log(result) возвращает неопределенное

var result;
this.query(sql).execute(function(error, rows) {
    console.log( rows )
    result = rows;
});
console.log( result );

Ответы [ 2 ]

8 голосов
/ 08 июня 2011

Node.js управляется событиями, что означает, что большинство функций являются асинхронными.Функция execute не возвращает никакого значения, поскольку возвращаемое значение находится в анонимной функции, объявленной в качестве первого аргумента, причем эта функция будет вызываться только после выполнения запроса и возвращения значения из базы данных.Таким образом, ваша переменная result не содержит никакого значения, поскольку возвращать пока нечего.

** EDIT **

Даже после редактирования строка гдеВы регистрируете переменную result, которая выполняется до , вы присваиваете ей rows, потому что анонимная функция выполняется только , позже , когда запрос завершен.

0 голосов
/ 08 июня 2011

Что возвращает .execute?Это может быть просто обработка элемента, возвращенного .query без возврата массива

...