$.when 不等待 Ajax 请求完成

2024-03-18

我想首先使用 Backbone.js 渲染一个视图,该视图显示从服务器拉取的文章。然后,我想将其标记为“已见”,并将未见消息的计数返回给路由器,因为它需要可供其他视图使用。

所以在我的路由器中,我有:

    getArticle: function (id) {

        require(["app/models/article", "app/views/Article"], function (models, Article) {

                var article = new models.Article({id: id});

                article.fetch({
                    success: function (data) {

                        var articleView = new Article({model: data, message_count:that.message_count});

                        slider.slidePage(articleView.$el);

                        $.when(articleView.saveView()).done(function(data){
                            console.log('in when and data is ');
                            console.log(data);
                        });

                    },
                    error: function(){
                        console.log('failed to fecth artcie'); 
                    }
                });

        });
    },

文章视图中的 saveView() 是:

    saveView: function(){

        var viewDetails = [];

        viewDetails.device_id = this.options.device_id;
        viewDetails.article_id = this.model.id;
        viewDetails.project_title = project_title;

        var article_view = new models.ArticleView();

        article_view.save(viewDetails, 
                        {
                        success: function(data) {
                                var count = data.get('count');   
                                console.log('in saveView() success and count is ');
                                console.log(count); 
                                return count;     
                            },
                            error:   function(model, xhr, options){
                               console.log(xhr.responseText);
                            },
                        });
    },

这会调用 REST API,记录文章的查看情况,然后返回未查看文章的计数。这会导致控制台输出:

在当和数据为 router.js:286 未定义 router.js:287 中 saveView() 成功且计数为 Article.js:45 4

所以,不知何故,$.when不起作用,因为它在执行之前没有等待 Ajax 请求发送.done脚本。有任何想法吗?


您需要返回一个 jQueryDeferred http://api.jquery.com/category/deferred-object/对象为$.when正常工作:

return article_view.save(viewDetails, 
    {
    success: function(data) {
            var count = data.get('count');   
            console.log('in saveView() success and count is ');
            console.log(count); 
            return count;     
        },
        error:   function(model, xhr, options){
           console.log(xhr.responseText);
        },
    });

骨干的save() method 返回一个jqXHR object http://backbonejs.org/docs/backbone.html#section-61其行为方式与Deferred在这种情况下的对象。只需像上面那样链接返回调用即可。这应该得到$.when()等待请求完成。

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

$.when 不等待 Ajax 请求完成 的相关文章

  • Protractor:如何从字符串中删除多余的空格,就像我们在 java getText.trim() 中使用的那样

    如何从字符串中删除多余的空格 就像我们在中使用的那样java getText trim in 量角器 我这样使用 var columnvalue rows get 9 getText var columnvalue1 columnvalue
  • Select2 基本示例不起作用

    我想得到select2使用 symfony2 脚本的库 我正在尝试实现提供的基本示例https select2 github io examples html https select2 github io examples html pa
  • 无法处理 ajax 中的 302 重定向,为什么? [复制]

    这个问题在这里已经有答案了 我有一个使用表单身份验证用 asp net mvc 编写的后端服务器 当用户未通过身份验证时 服务器将自动发送 302 重定向到登录操作并返回登录页面 在客户端 我有一个项目列表 只有经过身份验证的用户才能访问此
  • 使用“:not”和“.not()”选择器之间的性能差异?

    以下两条生产线之间是否存在速度 效率差异 table td not first child and table td not first child 我认为第一个会更好 因为它删除了对象 但是是否存在实际差异并且是否实质性差异 Thanks
  • 从 Google Places API 获取 JSON 文件

    我正在尝试使用 Places API 最初尝试使用 jQuery 中的 ajax 但我一直在文件的第一个元素上收到意外的标记错误 但我后来意识到你无法从 Places API 获取 JSONP 所以下面是它返回的示例 我一生都无法让它将 i
  • 解码URIComponent抛出错误“URI格式错误”

    As unescape已被弃用 我已选择decodeURIComponent 但它没有按预期工作 decodeURIComponent无法解码以下 URI 组件 Coast 20Guard 20Academy 20to 20hold 20a
  • 跨多个子域的 WebAuthn

    我正在尝试在我的网站上设置 WebAuthn 身份验证流程 但遇到了问题 我希望我的用户能够在主网站 www domain com 上注册他们的设备 以便可以通过用户设置轻松访问 身份验证本身通过 IdP sso domain com 在不
  • 需要帮助在 D3.js 条形图中将 x 轴刻度与条形对齐

    我有一个可用的线性条形图D3 js http d3js org 它也有基于时间的 x 轴 条形图绑定到计数属性 而轴绑定到日期属性 轴上的刻度未与条形对齐 知道如何将它们两者排列起来吗 这是 jsFiddle http jsfiddle n
  • 实现github.com文件无缝文件导航

    我刚刚在浏览 github 存储库时注意到最近的变化 当您选择文件或文件夹时 新文件会滑入并推出旧文件 使用 jquery 很容易做到这一点 但真正不同的是 URL 本身实际上发生了变化 因此书签仍然有效 我一直在努力为我正在开发的图书导航
  • Firebase 如何更新多个子项?

    我有很多这样的孩子的父母 Parent childe1 data childe2 data childe3 data childe4 data childe5 data 我怎样才能更新孩子们的信息 childe1 childe2 child
  • jQuery:在 .innerHTML 或 .text 更改时制作动画

    我通过使用 jQuery 动态更改网站上的文本来翻译我的网站 如下所示 span Something in English span mySpan html Something else in Spanish 它效果很好 但是由于文本长度的
  • 双向数据绑定(Angular)与单向数据流(React/Flux)

    上周 我一直在试图弄清楚如何双向数据绑定 Angular https docs angularjs org guide databinding and 单向数据流 React Flux https youtu be i 969noyAM是不
  • 有人可以解释以下涉及 Javascript 对象的双重赋值吗?

    这个问题在这里已经有答案了 var foo n 1 var bar foo foo x foo n 2 console log foo n 2 console log bar n 1 x n 2 有人能解释一下第三行发生了什么吗 线路foo
  • 在多个 html 文件上运行 javascript

    我有一个包含 1000 个 html 文件的文件夹 我必须使用 xpath 从每个 html 中删除某些节点 所以我已经制作了javascript 我无法打开每个文件并通过 Firefox 控制台运行 javascript 我用的是linu
  • 图像处理编程

    我想知道是否有任何方法可以使用某种编程语言检测图像中对象的位置 例如 如果我有一个球的图像 每 100 毫秒更新一次 是否可以通过某些程序使用某些东西来获取球的坐标 看一下OpenCV http opencv willowgarage co
  • 智能表 - 预选特定行

    我正在使用智能表 我需要预先选择特定行 因此 在加载我的列表后 我循环进入它并设置isSelected当我到达我想要选择的项目时属性 Preselect a row for var i 0 len scope displayCollecti
  • 如何使用ajax从服务器接收返回的数据?

    基本上我有一个带有用户名文本框和提交按钮的表单 现在我想要的是 当用户在文本框中输入文本时 它应该获取文本框值并将用户名发送到服务器 以便服务器可以检查该用户名是否被任何其他用户占用 我可以将文本值发送到服务器 但我不知道如何接收回一些数据
  • 仅当元素未分配类时,如何才能选择该元素?

    我正在修改现有 WordPress 主题的 CSS 主题有很多特殊样式的列表 附在 li 元素 正因为如此 有一个通用的list style none规则适用于 li li 元素 我想更新 CSS 以重新设置list style默认开启 l
  • 如何获取firestore集合下的文档数量? [复制]

    这个问题在这里已经有答案了 我想获取 firestore 集合中的文档总数 我正在制作一个论坛应用程序 所以我想显示每个讨论中当前的评论量 有类似的东西db collection comments get lenght或类似的东西 随着si
  • 如何禁用 Aloha 编辑器工具栏?

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

随机推荐

  • matlab - 访问特定工作区中的变量

    我需要类似的东西evalin 但是原来的evalinMatlab 不能递归使用 例如 我有函数 f0 它调用另外 2 个函数 f11 和 f12 function f0 v1 v2 deal 1 1 f11 f12 disp v1 end
  • 错误:在插件“@sanity/base”中找不到“sanity.json”文件

    我是 sanity 新手 并试图按照 youtube 上的教程进行操作 但当我运行 sanity start 时 我收到此错误 谁能给我建议我应该做什么 理智错误 https i stack imgur com c7UnF png 就我而言
  • 如何将 Class 文件的功能链接到 DocumentClass 和 AS3 中的 Movieclips?

    我在从时间轴代码切换到 OOP 文档类时遇到问题 我成功地用 AS3 按时构建了 Fla 没有任何问题 但在面向对象编程时完全无能为力 有人告诉我场景不好 我应该坚持将场景保存为影片剪辑 我的情况是这样的 我有 8 页 PSD 文件 我将每
  • 两个数据集或数组之间的相似性

    假设我有一个如下所示的数据集 A 1 B 3 C 6 D 6 我还有其他集合的列表来比较我的特定集合 A 1 B 3 C 6 D 6 A 2 B 3 C 6 D 6 A 99 B 3 C 6 D 6 A 5 B 1 C 6 D 9 A 4
  • 为什么默认情况下允许进程外服务器“本地启动”,但不允许“本地激活”?

    我当前需要创建一个 COM 对象 该对象由 ASP NET 处理程序内部的进程外 COM 服务器提供服务 因此 每次部署 COM 服务器时 我都必须启动 DCOM Config 并更改安全设置 具体来说 我需要确保本地用户 ASPNET 允
  • Python:无法将浮点 NaN 转换为整数

    我应用返回浮动的移动平均逻辑 我先将该 float 转换为 int 然后再使用它在 OpenCV 中绘制线条 但出现以下错误 ValueError cannot convert float NaN to integer 示例代码 def m
  • API 设计:公开 XML 或对象 #2

    我最近问了这个问题 公开 XML 或对象 https stackoverflow com questions 368521 api design expose xml or objects 感谢大家的回复 有一点需要澄清 API 始终可以远
  • 如何在 PostgreSQL 中以事务方式插入 max(order_field) + 1 行

    我需要在 PostgreSQL 表中插入一行 其中有一列包含表行子集上同一列的最大值 1 该列用于对该子集中的行进行排序 我正在尝试更新插入后触发器中的列值 但我在不同行中获取该列的重复值 在短时间内进行大量插入的并发环境中 避免子集中排序
  • 如何从 SSL 证书中提取密钥?

    我有一个在以下网站购买的 SSL 证书 pem crt der格式 我想知道如何从证书中获取密钥文件 有什么办法可以做到这一点吗 您可以提取公钥 这的用处有限 也许您将在其他不使用证书的工具 例如 SSH 或 PGP 中使用相同的密钥 使用
  • JTable 的 ScrollPane 行为异常

    我有一个JPanel组件与JTable在它里面 当我运行下面编写的代码时 表格会正确呈现和更新 一旦我尝试使用scrollPane方法 该表根本不呈现 谁能向我解释这是为什么 private static class GameHistory
  • Java中有没有内置的方法来增加字体大小?

    Java中有没有内置的方法来增加字体大小 The Font http java sun com javase 6 docs api java awt Font html类允许您指定字体大小 因此 要创建字体 您可以执行以下操作 Font f
  • 当行突出显示时设置 cellrenderertext 前景色

    当我有一个gtk CellRendererText 我可以关联它的foreground用树存储的一列着色 并设置foreground set属性设置为 True 以更改该列中文本的颜色 但是 当选择具有彩色列的行时 其颜色会消失 并且与任何
  • getContext().getSystemService 错误

    所以我只是想在我的 getView 函数中膨胀一个视图 而 getContext 由于某种原因说它是未定义的 package com MTSUAndroid import com MTSUAndroid Alarm Settings Eff
  • 是否有类似于 C sscanf 的 VB6 函数?

    我正在尝试读取由以下形式的文本行组成的文件 first value 1352 2 second value 12 third value 32323 first value 1233 2 second value 22 third valu
  • 关闭 Numba 中的列表反射

    我正在尝试使用 Numba 加速我的代码 我传递给函数的参数之一是可变列表列表 当我尝试更改子列表之一时 出现此错误 在 nopython 模式管道中失败 步骤 nopython 模式后端 无法反映反射容器的元素 反射列表 反射列表 int
  • 在 TFS API 中,如何获取给定测试的完整类名?

    我有一个ITestCaseResult http msdn microsoft com en us library microsoft teamfoundation testmanagement client itestcaseresult
  • postgresql 多个子查询

    我手头有一项任务 要求我返回一个学生的详细信息 该学生参加了一位姓霍夫曼的老师所教的课程 但我陷入了困境 SELECT FROM Public Class WHERE tid SELECT tid FROM Public Tutor WHE
  • 在 MVC Web 应用程序中访问 profile.newproperty

    我最近问了这个问题如何保留匿名用户选择 例如 主题选择 https stackoverflow com questions 11706349 how to persist anon user selection ex theme selec
  • 将解析信息添加到 Robolectric 包管理器

    这个问题与我想做的非常相似 如何使用 Robolectric 隐藏 PackageManager https stackoverflow com questions 12902777 how can i shadow the package
  • $.when 不等待 Ajax 请求完成

    我想首先使用 Backbone js 渲染一个视图 该视图显示从服务器拉取的文章 然后 我想将其标记为 已见 并将未见消息的计数返回给路由器 因为它需要可供其他视图使用 所以在我的路由器中 我有 getArticle function id