如何使用 jQuery Deferreds 数组? [复制]

2024-03-10

我有一个应用程序,要求按特定顺序加载数据:根 URL,然后是架构,最后使用各种数据对象的架构和 url 来初始化应用程序。当用户浏览应用程序时,数据对象将被加载、根据架构进行验证并显示。当用户对数据进行 CRUD 操作时,模式会提供首次验证。

我在初始化时遇到问题。我使用 Ajax 调用来获取根对象 $.when(),然后创建一组 Promise,每个 Promise 对应一个。这样可行。我在控制台中看到了提取。

然后我看到所有模式的获取,因此每个 $.ajax() 调用都有效。 fetchschemas() 确实返回了一个 Promise 数组。

然而,最后的when()子句永远不会触发,并且“DONE”一词永远不会出现在控制台上。 jquery-1.5 的源代码似乎暗示“null”作为传递给 $.when.apply() 的对象是可以接受的,因为如果没有对象,when() 将构建一个内部 Deferred() 对象来管理列表通过了。

这是使用 Futures.js 实现的。如果不是这样的话,应该如何管理 jQuery Deferreds 数组?

    var fetch_schemas, fetch_root;

    fetch_schemas = function(schema_urls) {
        var fetch_one = function(url) {
            return $.ajax({
                url: url,
                data: {},
                contentType: "application/json; charset=utf-8",
                dataType: "json"
            });
        };

        return $.map(schema_urls, fetch_one);
    };

    fetch_root = function() {
        return $.ajax({
            url: BASE_URL,
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: "json"
        });
    };

    $.when(fetch_root()).then(function(data) {
        var promises = fetch_schemas(data.schema_urls);
        $.when.apply(null, promises).then(function(schemas) {
            console.log("DONE", this, schemas);
        });
    });

您正在寻找

$.when.apply($, promises).then(function(schemas) {
     console.log("DONE", this, schemas);
}, function(e) {
     console.log("My ajax failed");
});

这也可以工作(对于某些工作价值,它不会修复损坏的ajax):

$.when.apply($, promises).done(function() { ... }).fail(function() { ... });` 

你会想通过$代替null以便this inside $.when指的是jQuery。这对来源来说不重要,但总比通过要好null.

通过将它们替换为来模拟所有 $.ajax$.when和样品works http://jsfiddle.net/Raynos/XDvUF/

所以这要么是你的ajax请求有问题,要么是你传递给fetch_schemas的数组有问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 jQuery Deferreds 数组? [复制] 的相关文章

  • 更改按钮文本jquery mobile

    我正在使用新的 jquery mobile 1 0 alpha 1 版本来构建移动应用程序 并且我需要能够切换按钮的文本 切换文本工作正常 但一旦执行文本替换 CSS 格式就会被破坏 格式混乱的屏幕截图 http awesomescreen
  • 单击浏览器后退按钮时,将用户带回到他们在上一页滚动到的位置

    当用户按下浏览器中的后退按钮时 是否可以将用户带回到他们向下滚动到的页面区域 如 pageA 是屏幕大小的两倍 因此您必须滚动才能阅读更多内容 您单击 pageA 上的链接转到新页面 pageB 阅读后 您在浏览器中单击 返回 现在 当您返
  • 如何绑定国家/地区更改国际电话输入

    我使用国家代码插件名称国际电话输入 js https intl tel input com 这是我的演示页面 在页面中我想清空手机 输入字段 当国家选择改变时 div class demo h3 Demo h3 div class iti
  • Postman如何发送请求? ajax,同源策略

    我发现了这个非常有用的 Chrome 扩展程序 名为 Postman 这是一个非常有用的扩展 特别是当您正在编写 RESTful 应用程序时 我感到困惑的一件事是这个插件 扩展如何能够在不同的域上成功发送 POST 请求 我尝试像这样使用
  • jQuery:在方法上取消绑定 jQuery 2.0

    在 jQuery 1 9 中live 已被弃用 因此新方法变为 document on mouseover blahblahfunc 我无法解除 blahblahfunc 的绑定 通过 unbind mouseover mouseout c
  • 寻找 jQuery 效果来逐渐显示隐藏的 DIV/图像

    可能我错过了一些明显的东西 但我无法弄清楚如何慢慢地显示隐藏的图像 DIV 以便它从上到下显示 如果你看一下这个 jsfiddle 你会看到我试图在 jQuery 中使用 show 来显示的图像 http jsfiddle net nick
  • 如何提交表单 onkeyup 操作

    我正在尝试保存表格onkeyup行动 我是 jQuery 新手 这可能吗 我很感激任何帮助 编辑1 保存表单意味着保存到服务器 有没有办法增加0 2秒的延迟 此代码将在 keyup 上提交您的表单 element bind keyup fu
  • 序列化文件类型 jQuery

    我正在尝试使用序列化我的表单数据 包括文件图像字段jquery form jsjQuery API 该 API 正在帮助我序列化数据字段 包括图像并返回图像对象 object file 这是我的序列化代码 var data js form
  • jQuery Mobile:Listview 筛选搜索回调函数

    嘿 我想要一个过滤器搜索 这样您输入搜索的两个字母 相应的结果就会显示在列表视图中 我无法像 jqm listview 那样加载整个列表 因为它太大了 有人可以告诉我如何做到这一点 这有点超出了我理解 API 的范围 我知道如何使用 jqu
  • jQuery select2 与 WordPress

    我正在使用 jQueryselect2 https select2 org在 WordPress 内 我有一个像这样的 HTML 表格 如果用户点击我需要这里Bob SMith and admin它将转换为select2具有多项选择的下拉菜
  • 使用 jquery 使用 href 值填充 _link() 目标 url

    如何使用 jquery 获取链接中 href 属性的值以填充 link 目标 url 值 这是正常的代码 a href http www mydomain com gallery Gallery a 有许多链接需要以这种方式更新 您可以为要
  • Openlayers3:中止绘制交互

    我在 html 中使用绘制交互来手动绘制路线 manual route creation event createRoute click function remove previous interactions map removeInt
  • Jquery .ajax method =“post”但$_POST为空

    ajax method post url save php data id 453 action test beforeSend function complete function success function html mydiv
  • 使用 jQuery/JavaScript 提醒特殊字符

    如何在 Javascript jQuery 警报中显示带有特殊字符 例如 的字符串 例如 我想显示一个消息框 价格为 10 欧元 但是当我使用下面的代码时 alert The Price is euro 10 消息框中显示的输出是 The
  • 通过排队预加载图像?

    我正在寻找一种预加载特定图像并将其添加到队列中的方法 这是我目前所处的位置 http shivimpanim org testsite imageloader html http shivimpanim org testsite image
  • Fabric JS html 5 图像弯曲选项

    我想用html5工具制作图像曲线 我使用 Fabric js 作为 html5 画布工具 请指导我如何在杯子 玻璃 圆柱形或圆形产品等图像上制作弯曲图像 参考号图片如下 http vsdemo cwwws com Images Produc
  • 如何通过 JavaScript 设置输入值?

    我有 id txt1 的输入字段 但我无法从 JavaScript 更改该值
  • Jquery UI:日期选择器。如何通过 $_GET 在日期选择器中设置日期

    我找不到如何设置 GET 变量来手动设置日期选择器中的日期 http jqueryui com demos datepicker http jqueryui com demos datepicker 例子 那可能吗 Thanks 在此使用
  • 如何使用ajax从服务器接收返回的数据?

    基本上我有一个带有用户名文本框和提交按钮的表单 现在我想要的是 当用户在文本框中输入文本时 它应该获取文本框值并将用户名发送到服务器 以便服务器可以检查该用户名是否被任何其他用户占用 我可以将文本值发送到服务器 但我不知道如何接收回一些数据
  • 如何禁用 Aloha 编辑器工具栏?

    有没有办法像侧边栏一样禁用 Aloha 的 ExtJS 工具栏 Aloha settings modules aloha aloha jquery editables editable jQuery sidebar disabled tru

随机推荐