25 個の html テンプレートを非同期で読み込もうとしています
これが私のコードです:
var loopingLoadTemplate = function(index){
var name = names[index];
$.get('templates/' + name + '.html', function (data) {
that.templates[name] = data;
tplCount++;
console.log(tplCount + " " + names.length);
if (tplCount === names.length){
callback();
}
});
};
for (i = 0; i < names.length; i++){
loopingLoadTemplate(i);
}
tplCount は私が保持しているカウンターなので、コールバックをいつ安全に起動できるかがわかります
問題は、ロードするテンプレートが 25 個あることです。Chrome コンソールのネットワーク タブで確認すると、25 個のテンプレートすべてが正しくロードされていることがわかりますが、console.log は tplCount が 21 で停止していることを示しています。 . for ループの起動が速すぎて、$ 関数の一部のコールバックが起動しなかったためでしょうか?
これらすべてのテンプレートを非同期で安全に読み込むにはどうすればよいですか?
そのため、再帰呼び出しを使用して同期フォールバックも試しましたが、いくつかのテンプレートをロードした後に不思議なことに停止し、警告サインが表示されません
var loadTemplate = function (index) {
var name = names[index];
console.log("loading " + names[index]);
$.get('templates/' + name + '.html', function (data) {
that.templates[name] = data;
index++;
if (index < names.length) {
loadTemplate(index);
console.log("trying another load");
} else {
callback();
console.log("trying callback");
}
});
};
loadTemplate(0);