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);
}
kは関数の引数としてすぐに使用されることに注意してください。引数の値は、コールバックとして関数returnによって参照できるように格納され、kがインクリメントされても変更されません。これまでと同じように行うと、すべてのコールバックが同じオブジェクトを参照しているため、kの値もすべて同じになります。
(1)ループが終了する前に一部が戻ってこない限り