【发布时间】:2016-02-12 17:23:14
【问题描述】:
我有一系列嵌套的异步调用需要在我的代码继续之前完成。函数 save_part1 调用 sqlite 数据库并返回感兴趣的行。对于这些行中的每一行,我都会进行 ajax 调用以远程保存它们。
从我所读到的关于 Promise 和 deferred 的内容中,我只看到它们被用于 ajax 调用的上下文中。最重要的是,它让我的大脑受伤。
问题:如何等到所有 ajax 调用完成后才开始 save_part2?
function save()
{
save_part1();
//this should only happen after all the ajax calls from save_part1 are complete
save_part2();
}
function save_part1()
{
db.transaction(function (tx) {
tx.executeSql("SELECT * FROM TABLE1", [],
function (transaction, results) {
for (var i = 0; i < results.rows.length; i++)
{
var row = results.rows.item(i);
ajaxCall_item1(row);
}
}, errorHandler)
});
}
function save_part2()
{
db.transaction(function (tx) {
tx.executeSql("SELECT * FROM TABLE2", [],
function (transaction, results) {
for (var i = 0; i < results.rows.length; i++)
{
var row = results.rows.item(i);
ajaxCall_item2(row);
}
}, errorHandler)
});
}
【问题讨论】:
-
ajaxCall_item 长什么样子?
-
您是否正在寻找 api.jquery.com/ajaxcomplete 中解释的内容。您可以使用 ajaxComplete 进行另一个 ajax 调用。
标签: javascript jquery ajax jquery-deferred