尝试用 .then、.fail 和 .reject 打破 jQuery 承诺链

2024-03-03

更新:此问题是 jQuery 1.7 与 1.8 的结果。永远不要在 1.7 中使用 Promise,因为它们不能通过在 a 中返回 Promise 来链接。.then。 1.8看起来他们并没有搞砸。

http://jsfiddle.net/delvarworld/28TDM/ http://jsfiddle.net/delvarworld/28TDM/

// make a promise
var deferred = $.Deferred();
promise = deferred.promise();

// return a promise, that after 1 second, is rejected
promise.then(function(){
    var t = $.Deferred();
    setTimeout(function() {
        console.log('rejecting...');
        t.reject();
    }, 1000);

    return t.promise();
});

// if that promise is successful, do this
promise.then(function() {
    console.log('i should never be called');
})

// if it errors, do this
promise.fail(function() {
    console.log('i should be called');
});

deferred.resolve();

预期:“应该叫我”

实际:“我不应该被称为”

Problem:我想链接回调,并让其中任何一个都能够打破链条并触发fail函数,并跳过其他链式回调。我不明白为什么所有的then都被触发而fail没有被触发。

我来自 NodeJS 的 Q 库,所以我尝试了.then第一的。但是,将其更改为.pipe没有影响。


你没有重新定义的价值promise, 尝试这个:

http://jsfiddle.net/28TDM/1/ http://jsfiddle.net/28TDM/1/

var deferred = $.Deferred();
promise = deferred.promise();

promise = promise.then(function(){
    var t = $.Deferred();
    setTimeout(function() {
        console.log('rejecting...');
        t.reject();
    }, 1000);

    return t.promise();
});

promise.then(function() {
    console.log('i should never be called');
})

promise.fail(function() {
    console.log('i should be called');
});

deferred.resolve();

显然它does按照您想象的方式工作,它只是没有记录https://api.jquery.com/deferred.then https://api.jquery.com/deferred.then。很酷。这是 jQuery 1.8.0 中添加的新功能,很可能他们只是没有完成更新文档。

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

尝试用 .then、.fail 和 .reject 打破 jQuery 承诺链 的相关文章

  • 移动设备上的剩余悬停效果

    我一整天都在努力做这个JSFiddle http jsfiddle net gsamaras q2w4jjyt 4 也适用于手机 但我所有的尝试都没有效果 在桌面上 当用户将鼠标悬停在箭头上时 它会变成红色 在移动设备上 当用户触摸 为了单
  • IE 中的 jQuery 鼠标闪烁

    当我在 IE 中执行 fadeIn fadeOut slideUp slideDown toggle 等 jQuery 函数时 鼠标总是闪烁 沙漏在光标旁边的视图中快速闪烁 我尝试了不同的方法来在动画进行时完全隐藏鼠标 但没有效果 而且在大
  • xhr 响应 for 循环不起作用

    我有 xhr 和 for 循环 它的工作非常罕见 for var i 0 i lt this files length i var xhr new XMLHttpRequest xhr upload onprogress function
  • 如何阻止用户重复单击 jQuery AJAX 调用?

    我有一个包含以下脚本的网页 JavaScript function LinkClicked var stage this id var stop ContentPlaceHolderMenu txtDate val var nDays Co
  • jquery ajax仅从另一页获取一个div块

    我有一个成功的ajax请求 可以下载整个html内容 现在我只需要获取一个包含id data today 的div标签 如何编写这样的脚本 看看这个 SOq 在 jQuery 中提取 Ajax 返回数据 https stackoverflo
  • 包含从代码隐藏 (ASP.NET C#) 到 ASPX 中的图像概述的图像列表 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • jQuery mCustomScrollbar 不适用于 ajax 内容

    window load function content 1 mCustomScrollbar scrollButtons enable true ajax code function beauty of ceylon content te
  • iframe src 允许所有来源,但仍然收到跨来源错误

    我管理 siteA 的前端 并在页面上有一个 iframe 其中 src 指向 siteB 的资源 这是其他供应商和客户端使用的可嵌入资源 其视频嵌入 因此 siteB 的响应标头设置为 Access Control Allow Origi
  • 单击表格行可显示更多信息

    我正在尝试使用 jQuery 来实现以下目标 当单击一个表格行时 会显示表格行内的 info div 如果单击另一个表格行 则当前显示的任何其他 info 元素将被隐藏 并根据表格行显示新的 info div已被点击 这个问题是 代码无法正
  • javascript/jquery 从选择中删除或删除选项

    在某些情况下 我需要从选择中删除选项 基本上 if mystatement true remove item with id option1 from select of id select1 有人知道我可以实现这一目标的代码吗 非常感谢
  • 如何居中对齐数据表标题

    我是数据表新手 当我制作表格标题时 它总是左对齐 如何将标题设置为居中对齐 我已阅读 datatables net manual styling classes 和 datatables net reference option colum
  • 重新加载页面时删除哈希值?

    我使用哈希来切换我的图像滑块 当我重新加载页面并且哈希值设置为 e h 3 没有图片 当图库在几秒钟后自动滑动时 它显示下一个 所以几秒钟内什么也没有 有没有办法在加载页面时检查哈希并将其删除 我只想关心那些用散列为页面添加书签的人 问候
  • 在节点环境中存根 jQuery.ajax (jQuery 2.x)

    我正在尝试运行一些需要存根的测试jQuery ajax 我正在使用 SinonJS 来做到这一点 它曾经与旧版本的 jQuery 1 x 一起工作得很好 var require jquery var sinon require sinon
  • jquery悬停一次?

    jquery 使悬停函数执行一次然后停止的方法是什么 one 不起作用 button color 2 hover function dosmth 谢谢 Hover http api jquery com hover 绑定处理程序鼠标输入 h
  • 试图隐藏选择列表中的选项..不适用于 chrome 和 ie

    我有一个选择列表 其中有很多选项 根据某些输入 我想从选择列表中隐藏一些选项 为了隐藏选择列表中的选项 我编写了jquery 例如 selectlist1 option each function this hide 但这段代码似乎只适用于
  • Twitter Typeahead 上使用 Bootstrap 3 的 CSS 问题

    随着 Bootstrap 3 的发布 Typeahead 已被删除 取而代之的是 https github com twitter typeahead js https github com twitter typeahead js 我已经
  • iphone jquery 移动闪烁问题

    我在 iPhone 上使用使用 jQuery mobile 开发的应用程序时遇到闪烁问题 我尝试了互联网上提供的几种解决方案 包括 CSS 更改 将过渡设置为 无 甚至在 jquerymobile js 中注释代码 但没有运气 我使用的 J
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div

随机推荐

  • 从 PDF 文件中提取文本数据

    是否可以在 R 中解析 PDF 文件中的文本数据 那里似乎不是此类提取的相关包 http crantastic org search q parse pdf 但是有人尝试过或见过 R 中这样做吗 In Python中有PDFMiner ht
  • 如何查明 Prolog 是否执行尾调用优化

    使用SWI Prolog Win x64 的开发版本 我为 a 编写了一个 DCG 谓词确定性词法分析器 托管在 github 上 https github com sebgod goldparser prolog 因此所有外部谓词都没有留
  • 在 Perl 中获取按修改日期排序的文件列表

    我正在尝试获取按修改日期排序的文件列表 我修改了示例程序根据日期和时间对目录进行排序并列出文件 http forums devshed com perl programming 6 sort directory and list files
  • 使用loopj Android异步Http客户端同步调用

    在一种情况下 我尝试在 Loopj 上使用 setUseSynchronousMode 来等待 http 调用的结果 然后再继续 我试过 AsyncHttpResponseHandler responseHandler new AsyncH
  • 如何尽可能快地生成此 switch 语句?

    2009 12 04 更新 有关此处发布的一些建议的分析结果 请参见下文 问题 考虑以下非常无害 非常简单的方法 它使用switch返回定义的枚举值的语句 public static MarketDataExchange GetMarket
  • 单元测试项目中的连接字符串到 app_data 文件夹中的引用数据库

    我希望在单元测试项目中引用我的数据库文件 这是一个 ASP NET MVC 应用程序 请注意 我知道我不应该在单元测试中访问数据库 但这是为了快速修复我现在需要通过的一项测试 在下一个里程碑之后 我将嘲笑数据库访问方法等 这是我的 mvc
  • 在 Groovy 1.7 中使用具有混合内容的 HTML 构建器的正确语法是什么?

    On the Groovy 示例页面 https web archive org web 20100712132418 http groovy codehaus org Builders有一个示例说明如何使用具有混合内容的 Groovy H
  • Android:使用自定义键盘编辑文本

    我按照 sdk 中的示例创建了自己的自定义键盘 现在我想在我的应用程序中的 EditText 上默认使用这个自定义键盘 实际上我必须长按 edittext 然后选择我的custom keyboard 我怎样才能做到这一点 似乎与 input
  • 猜测无界整数

    如果我对你说 我正在想一个0到n之间的数字 我会告诉你你的猜测是高还是低 然后你会立即进行二分查找 如果我删除上限怎么办 即我正在考虑一个正整数 你需要猜测它 一种可能的方法是让您猜测 2 4 8 直到您对某些 k 猜测 2 k 并且我说
  • Pod 无法安装软件包(apt-get update 或 apt-get install )

    我发现集群中的 pod 在 exec 到 pod 时无法安装软件包 在调试时我意识到这是由于 etc resolv conf entries The etc resolv conf 其中一个 Pod 的条目是 nameserver 192
  • XMPP 带有支持 X-FACEBOOK-PLATFORM 的 Java Asmack 库

    我正在尝试使用 Smack 库在 Android 上进行 Facebook 聊天 我读过Chat API http developers facebook com docs chat 来自 Facebook 但我不明白如何使用这个库向 Fa
  • 对部分排序的数组进行排序

    我正在尝试对具有以下属性的数组进行排序 它增加到一定程度然后开始减少 然后增加然后减少等等 是否有任何算法可以通过利用部分排序来以低于 nlog n 的复杂度对其进行排序 数组示例 14 19 34 56 36 22 20 7 45 56
  • Python 求和字典列表中元组中的值?

    在我的字典中 每个条目都有一个元组列表 我的python语法可能是错误的 请耐心等待 它看起来像这样 1 2 2 4 3 6 1 7 1 8 3 2 4 1 5 3 1 2 我想对每个条目的元组中的第二个值求和 即 1 10 2 5 我一直
  • 当 TabHost 存在于活动中时,EditText 使用硬键盘失去焦点

    我正在 tabhost 内显示 EditText Tabhost 位于 SherlockFragmentActivity 内部 假设我处于触摸模式 我单击 EditText 以使其获得焦点并开始在其上输入内容 输入 2 3 个字符后 我决定
  • 将 image/jpeg 作为 arraybuffer 或 blob 返回

    我目前正在调用我的 api 它返回一个图像作为image jpeg 我的问题是通过 javascript Angular 调用 url 时 factory资源 我的数组缓冲区为空 另外 字节长度为 0 如果我使用响应类型 或 文本 调用 a
  • 是否有专为创建 REST API 参考文档而设计的 CMS 引擎? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Scala 并行赋值仅在声明中

    Having def f 1 two 3 0 为什么可以 var x y z f but not var i 0 var j hello var k 0 0 use i j k then i j k f expected but found
  • 用于未来更新的 Android 数据库方法

    在 android 中使用 sqlite 数据库的最佳方法是什么 sqlite数据库文件 第一次复制到应用环境中 OR 在代码中创建表 在数据库助手的 onCreate 中 我的数据库有6个表 第一次是空的 我问这个问题是因为我想将来更新我
  • 在 Lollipop 上使用 Android 存储访问框架列出文件时出现错误

    背景 我有一些应用程序大量使用 SD 卡进行文件同步 Kitkat 上的外部 SD 卡访问损坏仍然是一个大问题 但我正在尝试使用 Lollipop 上提供的新 API 为拥有此问题的用户解决此问题 我成功请求并保留了对 SD 卡的权限 并且
  • 尝试用 .then、.fail 和 .reject 打破 jQuery 承诺链

    更新 此问题是 jQuery 1 7 与 1 8 的结果 永远不要在 1 7 中使用 Promise 因为它们不能通过在 a 中返回 Promise 来链接 then 1 8看起来他们并没有搞砸 http jsfiddle net delv