getJSON выполнен асинхронный и последний console.log там за выполняться до назначения
Поскольку я не знаю, что вы на самом деле хотите, трудно сказать вам, что вы должны сделать. Что нужно иметь в виду, это порядок исполнения.
В этом коде
$.getJSON(searchURL, function(tweets){
console.log("done");
});
console.log("Request send");
первое, что происходит, является запрос отправить, searchURL
то следующая вещь, что «запрос отправить» будет выведено на консоль и, когда браузер получает ответ к запросите тогда, и как только функция будет вызвана, и «сделано» будет напечатано на консоли
далее у вашего кода есть проблемы с закрытием, так как k закрыто и будет иметь одинаковое значение для всех вызовов обратного вызова (1)
, чтобы обойти эту проблему вы можете использовать самостоятельно выполняя функцию
for(var k = 0;k<10;k++){
$.getJSON(searchURL, (function(i){
return function(tweets){
console.log("done for " + i);
}
}(k));
console.log("Request send for " + k);
}
заметить, что к используется в качестве аргумента для функции IMMEDIATEDLY, значение аргумента сохраняется для справки функцией возврата в качестве обратного вызова и не изменится при увеличении k. Если вы делаете, как вы сделали то, поскольку все обратные вызовы ссылаются на тот же объект все они будут также иметь одинаковое значение для к
(1), если некоторые возвращаются перед сквозным заканчивается
сделали вы также заметите, что 'k' имеет одинаковое значение во всех функций обратного вызова – Esailija
Да, это просто показать, как я не могу получить доступ к тем же данным внутри .getJSON. – jordaninternets
Сфера не имеет ничего общего с jQuery – Bergi