2015-06-28 6 views
3

Я новичок в JS, и я не могу повторно использовать переменную из alasql. когда я запускаю мой код я «unidifined»Повторное использование переменной alasql

var dataSource = alasql('SELECT AGENT_NAME, count(*) FROM XLSX("export.xlsx",{headers:true}) GROUP BY AGENT_NAME') 
console.log(dataSource) 

, но когда я запускаю

var dataSource = alasql('SELECT AGENT_NAME, count(*) FROM XLSX("export.xlsx",{headers:true}) GROUP BY AGENT_NAME',[], 
     function (data) { console.log(data)}) 

все нормально

ответ

1

Похоже alasql имеет обратный вызов после ответа базы данных. Попробуй это.

var dataResult; 
var dataSource = alasql('SELECT AGENT_NAME, count(*) FROM XLSX("export.xlsx",{headers:true}) GROUP BY AGENT_NAME',[], 
     function (data) { dataResult = data }) 

dataResult будет не определено до тех пор, пока не будет вызван обратный вызов. После этого он будет иметь значение.

Если вы хотите вызвать любой код после завершения обратного вызова базы данных, поместите его в сам обратный вызов.

var printResult = function(result){ console.log(result)}; 
var dataSource = alasql('SELECT AGENT_NAME, count(*) FROM XLSX("export.xlsx",{headers:true}) GROUP BY AGENT_NAME',[], 
     function (data) { printResult(data); }) 
+0

Аналогичным образом это работает, но подскажите мне больше о преобразовании массива alasql (json) в простой массив JS. Спасибо –

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