gpt4 book ai didi

javascript - JQuery等待多个延迟来解决

转载 作者:行者123 更新时间:2023-11-29 22:04:32 30 4
gpt4 key购买 nike

我有以下函数查询 SQLite 数据库并将结果推送到稍后使用的数组中。我需要等待每个语句来处理 (self.projectSetEditList) 中的表但是似乎推迟的主人并没有等待所有的 promise ......我只是在做这件事吗?在继续执行下一个功能之前,我需要知道所有 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...任何建议都非常感谢

最佳答案

您的代码对我来说显得过于复杂。

因为 $.when 也创建了一个 promise,所以不要费心自己创建 masterDeferred,只需做:

return $.when.apply($, promises);

唯一的功能差异是此版本会将 true 结果作为单独的参数传递给最终回调,而您的代码将传递单个 [true, true, .. .] 值。

关于javascript - JQuery等待多个延迟来解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21736499/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com