jquery在.each循环中延迟 [英] jquery deferred in .each loop

查看:243
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆