関数を同期的に調べてみましたが、実際には機能していないようです。私は外部のハンドルバーのテンプレートを使用して、データでロードされた '親' html要素を生成しています。その後、ロードした後、独自のデータで作成した '子'テンプレートからhtmlを追加します。どちらの関数呼び出しも同じ関数を呼び出しますが、異なるテンプレート/データを渡すだけです。以下は私がこれを持っているコードです - どんな助けもありがとうございます。ありがとう!これらの2つの関数を同期的に呼び出すことはできません
var loadSimpleCollection = function(templateFile, dataFile, containerSelector) {
var deferred = $.Deferred();
$.get(templateFile, function(text) {
// Extract HTML from the template file
var raw_template = text;
// Compile that into an handlebars template
var template = Handlebars.compile(raw_template);
// Retrieve the container where the data will be displayed
var container = $(containerSelector);
// Fetch collection data from JSON file
$.getJSON(dataFile, function(data, status, xhr) {
$.each(data,function(index,element){
var html = template(element);
container.append(html);
});
});
});
return deferred.promise();
}
loadSimpleCollection('template1.hbs', 'data1.json', '#parent-div').then(loadSimpleCollection('template1.hbs', 'data2.json', '#child-div'));
は、おそらくそれ以外の場合は、すぐに呼ばれていますあなたの 'then'表現を、ラップします。例えば'.then(function(){loadSimpleCollection(...)})' –
'container.append(html);の後に返された約束' deferred.resolve() 'を解決する必要があります。 –