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());
}
유일한 비동기 기능은 내부의 모든 제안을 크게
또한 참조하십시오. https://api.jquery.com/ajaxStop/ – Blazemonger
@Blazemonger, executeSql은 아약스 호출이 아니며, SQLite 플러그인 비동기 호출입니다 ... – gdex