我有以下函数查询SQLite数据库并将结果推送到稍后使用的数组中。我需要等待每条语句处理(self.projectSetEditList)中的表。然而,似乎延迟的主并没有等待所有的承诺......我只是想说这全错了吗?在进入下一个函数之前,我需要知道所有sql结果何时准备就绪。JQuery等待多个延迟来解决
/// <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 ...任何建议都非常赞赏
另请参见https://api.jquery.com/ajaxStop/ – Blazemonger
@Blazemonger,executeSql不是ajax调用,它是SQLite插件异步调用... – gdex