当前位置: 首页 > 面试题库 >

解决所有延迟的对象后,引发jquery deferred.then()

微生善
2023-03-14
问题内容

我有两个JavaScript函数save()saveAll(),设置如下:

function save(data) {
    return $.post('/save', data);
}

function saveAll(callback) {
    var dataArray = [];
    $.each(dataArray, function() {
        save(this);
    });
    callback();
}

我有兴趣进行修改,saveAll()以便利用jquery延迟对象,并在callback所有save()操作完成后提高功能。但是,我不确定确切的语法…特别是与$
.when()内的$ .each()有关。会是这样吗?

function saveAll(callback) {
    var dataArray = [];
    $.when(
        $.each(dataArray, function() {
            return save(this);
        })
    ).then(callback);
}

问题答案:

正如Eli指出的那样,$ .when()接受用逗号分隔的参数列表,而不是数组。使用Function.apply()传递数组似乎可以解决问题。

function saveAll(callback) {
    var dataArray = [], deferreds = [];
    $.each(dataArray, function() {
        deferreds.push( save() );
    });

    $.when.apply(window, deferreds).then(callback);
}


 类似资料:
  • 问题内容: 是否有可能在Java中获得对对象的所有引用。 我需要检查的是对象是否删除了所有的回调订阅。 谢谢 问题答案: 这可以通过JVMTI实现,并且通常由堆分析器完成。但是,它不能在Java内部完成。

  • 我有一种情况,我的ajax调用必须以特定的顺序执行。我在其他情况下使用了jQueryDeferred对象,但似乎找不到一种方法来使其正常运行。 我有一个函数,在它的生命周期中执行许多请求。一些请求将在其他请求的成功回调期间执行。 我的问题:当调用时,是否有方法将所有嵌套的延迟对象返回到原始的

  • 问题内容: 如果我从json.net获得序列化的JSON,如下所示: 我想让淘汰赛在FooList上输出foreach,但是我不确定如何继续,因为$ ref东西可能会抛出东西。 我在想解决方案将以某种方式通过不使用以下方式强制将所有Foos呈现在FooList中: 但这似乎很浪费。 问题答案: 从服务器接收的json对象包含循环引用。在使用对象之前,您必须首先 从对象中删除所有属性,这意味着`$r

  • 问题内容: 有两个JPA实体:具有一对多关系的用户和订单。 我在每个方法都在事务中运行的服务层类中使用这些实体。一切都很好,除非服务层类的方法必须返回这些实体。 此方法可以很好地返回数据。但是,当我尝试访问接收到的集合元素时,我捕获到异常:“ org.hibernate.LazyInitializationException:无法延迟初始化角色集合:package.User.orders,没有会话

  • 问题内容: 本文指出:“ defer语句将函数调用推送到列表上。” 我想知道是否可以从程序的另一个位置访问该列表中的元素,然后调用它们?我可以多次调用它们吗?我假设我对具有延迟行为(如果有帮助)的函数进行了引用。 因此,这是我想做的简短示例: 问题答案: 调用存储的“列表” 完全是特定于实现的,因此您 没有可靠的方式访问此列表 。1,2个为* G编译器家族中的实现细节(虽然有点老),可以发现在拉斯

  • 问题内容: 我需要在循环中对数据库进行SQL查询: 更好的方法是:保持原样或循环后移动: 或者是其他东西 ? 问题答案: 整个要点是直到函数返回才执行,因此将其放置在要关闭的资源打开后的适当位置。但是,由于要在循环内创建资源,因此根本不要使用defer- 否则,在函数退出之前,您不会关闭在循环内创建的任何资源,因此它们会堆积直到然后。相反,您应该在每次循环迭代结束时关闭它们, 而无需 :