jquery在.each循环中延迟 [英] jquery deferred in .each loop
本文介绍了jquery在.each循环中延迟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这应该是一个简单的。
我有一个被调用的函数,我需要等待所有的异步操作完成。
我想要的是这样......
This should be a simple one. I have a function that is called and I need to wait for all the async operations to complete. what I want is something like this...
self.processSchema(data).done(function(results){ //do stuff});
processSchema函数使用$ .each循环并调用异步方法。
The processSchema function loops using $.each and calls an async method.
var processSchema = function(data)
{
var def = new $.Deferred();
$.each(table, function()
{
//calls an async SQLitePlugin method
db.executeSql(sql, data, function(tx, results){
def.resolve(results);
}
}
return(def.promise());
}
这似乎不起作用,我是$ .Deferred的新手所以任何指导都会有所帮助
This does not seem to work, I am new to $.Deferred so any guidance would be helpful
推荐答案
每次迭代都需要一个承诺
You'll need a promise for each iteration
var processSchema = function(data) {
var promises = [];
$.each(table, function() {
var def = new $.Deferred();
db.executeSql(sql, data, function(tx, results){
def.resolve(results);
});
promises.push(def);
});
return $.when.apply(undefined, promises).promise();
}
这篇关于jquery在.each循环中延迟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文