2016-02-17 5 views
1

Я пытаюсь загрузить текст из файла, разделить его на \n и нажать каждую строку в массив:массива остается пустым

var entries = new Array(); 
$(document).ready(function() { 
    loadFile(); 
    console.log(entries.length) // Result: 0 
}); 

function loadFile(){ 
    $.get('file.txt', function(data) { 
     console.log(data); // my file is shown 
     var lines = data.split("\n"); 
     $.each(lines, function(key, value) { 
      entries.push(value); 
     }); 

    }, 'text'); 
} 

я могу увидеть содержимое моего файла в консоли, так файл загружается, но мой массив остается пустым, его длина равна 0.

Почему строки не будут помещены в мой массив?

ответ

1

$.get является асинхронной функцией, так что вы должны показать длину в обратном вызове после получения ответа data:

var entries = new Array(); 
$(document).ready(function() { 
    loadFile(); 
}); 

function loadFile(){ 
    $.get('file.txt', function(data) { 
     console.log(data); // my file is shown 

     var lines = data.split("\n"); 
     $.each(lines, function(key, value) { 
      entries.push(value); 
     }); 

     console.log(entries.length) // that will return the true length 

    }, 'text'); 
} 

Проверить How do I return the response from an asynchronous call?.

Надеюсь, это поможет.

+0

Вы можете назвать свою функцию вместо 'console.log (entries.length)'. –

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