У меня есть следующая функция, которая запрашивает базу данных SQLite и помещает результаты в массив, который используется позже. Мне нужно дождаться, пока каждый оператор обработает таблицы в (self.projectSetEditList). Однако кажется, что отложенный мастер не ждет всех обещаний ... Я просто делаю все это неправильно? Мне нужно знать, когда все результаты sql будут готовы, прежде чем переходить к следующей функции.
/// <summary>Validates user INSERTS to project_set entities</summary>
this.initProjectSetAdds = function ()
{
var promises = [];
var masterDeferred = new $.Deferred();
///var count = (self.projectSetEditList.length - 1);
$.each(self.projectSetEditList, function (index, syncEntity)
{
var def = new $.Deferred();
//get the config entity definition object
var entityDefinition = self.getEntityDefinition(syncEntity.entity_name);
self.db.executeSql(self.getAddsSql(entityDefinition)).done(function (tx, insertResults)
{
self.projectSetAdds.push({ definition: entityDefinition, addedObjects: dataUtils.convertToObjectArray(insertResults) });
def.resolve(true);
});
promises.push(def);
});
//resolve all deferred and return to caller
$.when.apply($, promises).then(function ()
{
masterDeferred.resolve(arguments);
},
function ()
{
masterDeferred.reject(arguments);
});
return (masterDeferred.promise());
}
Единственная асинхронная функция внутри - executeSql... Любые предложения приветствуются