有条件的承诺

2024-03-21

在我的脚本中,我需要检索一个字典以将编码值转换为名称:

$.ajax({
    // retrieve dictionary
})
.done(function(dictionary){
    // convert encoded values into names
})
.done(function(){
    // run my application
});

然而,有时字典已经被另一个应用程序加载,在这种情况下我不需要 ajax 调用:

if (dictionary) {
    // convert encoded values into names
    // run my application
}
else {
$.ajax({
    // retrieve dictionary
})
.done(function(dictionary){
    // convert encoded values into names
})
.done(function(){
    // run my application
});
}

这个 if/else 语句相当重,有没有办法让它变得更短:

// load dictionary if needed
// then run my application

注意:我在伪代码中使用了 $ 符号,但我不一定依赖于 jQuery。


你应该打电话$.ajax()恰好一次,并将返回的承诺存储在您的(全局)中dictionary多变的。

然后,每次你想使用结果时,只需写dictionary.then(...).
如果 AJAX 请求已完成,回调将立即运行。

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

有条件的承诺 的相关文章

  • 如何查询和过滤 Firebase 实时数据库 [重复]

    这个问题在这里已经有答案了 我想从数据库中获取所有人员 其中名字和姓氏由用户输入给出 到目前为止 这是我的代码 admin database ref persons orderByChild Firstname equalTo firstN
  • 为什么 lodash 将我的数组转换为对象?

    我是 lodash 的新手 创建了一个函数 该函数从值为 null 或空白的对象中删除键 但是当我传递包含某些部分作为数组的对象时 它会删除数组并将其转换为对象 下面是我尝试过的代码 mixin removeFalsies this rem
  • 从 JavaScript 重新启动动画 GIF,无需重新加载图像

    我正在使用动画 GIF 创建动画幻灯片 我正在从一个动画淡入淡出到下一个动画 问题是 我发现确保 GIF 从第一帧开始动画的唯一方法是每次显示时重新加载它 每个 GIF 大约 200KB 这对于连续幻灯片播放来说带宽太大了 这是我当前的代码
  • 使用Javascript自动打开弹出新窗口[重复]

    这个问题在这里已经有答案了 如何使用Javascript加载页面时打开弹出新窗口 我希望 当网站加载时 它会自动打开弹出新窗口 我使用以下内容 不行 尝试这个
  • 元素存在之前的html5音频绑定时间更新

    我试图从音频标签绑定 timeupdate 事件 该标签尚不存在 我习惯这样做 body on click selector function e 我用音频标签尝试了这个 body on timeupdate audioPlayerJS a
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 如何将 scala 列表转换为 javascript 数组?

    有更简单的方法吗 document ready function var jsArray if scalaList null for id lt scalaList jsArray push id 很简单 如下所示 import play
  • 按 Enter 键提交消息?

    我正在开发一个基于本教程使用 Meteor 构建的聊天应用程序 http code tutsplus com tutorials real time messaging for meteor with meteor streams net
  • Durandal SPA 与打字稿有关的问题

    我使用 TypeScript 1 8 将我的 durandal SPA 应用程序从 VS 2012 更新到 VS 2015 它将生成 JavaScript ECMA5 我解决了所有构建错误 但我无法修复一个名为 return 语句只能在函数
  • 当key未知时如何获取js对象中的属性值

    我有一个对象数组 a 81 25 p 81 25 81 26 p 81 26 我想循环遍历数组并获取值p在每个元素中 for var key in a console log a key outputs 81 25 Object How d
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • 全日历与 UTC 和本地日期的混淆

    我确实让 fullcalendar 正常初始化 所以它代表当前日期 午夜 gt 午夜 1 天 1 小时时段 我从其他一些数据源获取带有时间戳的数据 格式为 YYYY MM DD HH mm 作为字符串传输 无时区信息 因此 我将该字符串转换
  • axios 如何将 blob 与 arraybuffer 作为响应类型处理?

    我正在下载一个 zip 文件axios https www npmjs com package axios 为了进一步处理 我需要获取已下载的 原始 数据 据我所知 Javascript 有两种类型 Blob 和 Arraybuffers
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 从数组创建树并将父字段的表示形式更改为对象而不是 ID

    我堆满了琐碎的问题 但找不到解决方案 任何帮助将不胜感激 我有一个对象数组 id 1 title home parent null id 2 title about parent null id 3 title team parent 2
  • Woocommerce 中的 Ajaxify 标头购物车项目计数

    我正在为 WordPress 创建一个自定义 woocommerce 集成主题 我在顶部有一个 blob 显示购物车中的商品总数 我想使用 Jquery 更新此 blob 无需重新加载页面 我能够通过获取购物车中的当前数量来增加商品数量bl
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • 如何加载Jquery Tiny滚动条

    所以我想自定义一个滚动条 我发现了一个很小的滚动条 这是一个jquery插件 http baijs nl tinyscrollbar http baijs nl tinyscrollbar 问题是 无论如何我都无法让它工作 我将 Jquer
  • 如何在 JavaScript 中将日期时间微格式转换为本地时间?

    我有一个页面当前正在使用日期时间微格式 http microformats org wiki datetime design pattern显示时间戳 但我只显示我自己的时区的人类可读时间
  • 了解客户端文件的对象 URL 以及如何释放内存

    我在用createObjectURL获取本地图像文件的引用 URL 当我完成文件 图像后 我打电话revokeObjectURL释放该内存 一切对我来说都很好 但我只是想确保我释放了我能释放的所有内存 我检查后出现了我的担忧chrome b

随机推荐

  • Windows 窗体 - Tab 键在子面板中不起作用

    我有一个表单中的子面板 其中包含一些文本框和按钮 我尝试为这些控件设置 tabstop 和 tabindex 属性 以便用户可以从一个控件切换到下一个控件 但由于某种原因 制表符不起作用 当我按 Tab 键时 光标停留在具有焦点的同一字段上
  • 使用 CakePHP 提取 URL 值(参数)

    我知道 CakePHP 参数可以轻松地从 URL 中提取值 如下所示 http www example com tester retrieve test good 1 accepted active 我需要从 URL 中提取值 如下所示 h
  • 如何将 NSMutableString 绑定到 NSTextView 的值?

    好的 所以我正在尝试在 Xcode 中为自己设置一个非常简单的程序 我有一个窗口 在界面生成器中 其中包含一个 NSTextView 和一个 NSButton 在我的 AppController 类中 我声明了一个NSMutableStri
  • vc++下编译bison和flex程序时unistd.h相关困难

    我正在使用 bison flex 通过 cygwin 下载 和 vc 当我编译程序时 出现错误 fatal error C1083 Cannot open include file unistd h No such file or dire
  • 为过程或函数 cdc.fn_cdc_get_all_changes_ 提供的参数数量不足

    看似有效的代码 用于查询表中最新跟踪的更改Fields DECLARE Begin LSN BINARY 10 End LSN BINARY 10 SET Begin LSN sys fn cdc get min lsn Fields SE
  • Firefox 打开新选项卡而不是弹出窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我发现在最新版本的 Firefox 中 添加了一个名为 在新选项卡中打开新窗口 的设置 当我保持打开状态时 所有弹出窗口 使用打开的jav
  • 将 Html.Partial 添加到 Javascript

    我想使用 ASP NET Html Partial 视图在 Javascript 中设置一个字符串 问题是 Html Partial 给出了 HtmlString 而不是我可以使用 JQuery 处理的 Javascript 字符串 Jav
  • 内嵌显示图像和文本

    我无法在标题的每一侧获取图像 我尝试过 display inline block 但这不适合我 这里是jsfiddle http jsfiddle net uyjmffbu inline image display inline block
  • 异常保证和按值传递

    我最近在多种情况下遇到过这个问题 其中表达的一些观点让我感到惊讶 这是第一个简单的例子 void f std vector
  • 在 Objective-C 中使用枚举?

    这是在 Objective C 中使用 emum 的正确方式 甚至是有效方式 吗 即不使用 menuItem 而只是定义了一个列表 add 1 load 2 list 3 等 enum menuItems add 1 save load l
  • AsyncTaskLoader:方向更改后未调用 onLoadFinished

    我有一个AsyncTaskLoader对于长时间运行的任务 当加载程序运行时 我的活动由于方向变化而被破坏 onLoadFinished回调未被调用 我可以以某种方式将加载程序 重新附加 到我的新活动 它的回调吗 这是我的 简化的 Acti
  • Django python 中的Search_fields

    我想知道如何使用外键来执行搜索 例如 class Product models Model name models CharField max length 127 description models TextField code mod
  • 将 mongodb 作为 Windows 服务运行

    我已经在 win32 上安装了 mongodb 我正在尝试将其作为服务运行 我已按照此处发布的说明进行操作 http www deltasdevelopers com post Running MongoDB as a Windows Se
  • SQL Server 2005 查询的性能

    这需要 4 秒来执行 有 2000 000 行 为什么 DECLARE AccountId INT DECLARE Max INT DECLARE MailingListId INT SET AccountId 6730 SET Max 2
  • 将选择器添加到 UIButton

    I have ViewController然后两个不同的ViewControllers扩展该主要ViewController 一个用于 iPhone 另一个用于 iPad iPad 的ViewController实例化一个单独的扩展UIVi
  • 哪些真实平台将硬件端口映射到内存地址?

    我有时会在某些平台上看到以下 C 或 C 代码的语句 int ptr ptr 0 可能会导致写入硬件输入输出端口 如果ptr恰好存储了该端口映射到的地址 通常它们被称为 嵌入式平台 此类平台的真实例子有哪些 根据我的经验 大多数系统都使用内
  • 使用自定义区域性时 ResourceManager 未选择正确的资源集

    我使用以下代码创建了一个本地化的 MVC 网站 亚历克斯 阿达米安 Alex Adamyan 的博客 http adamyan blogspot com 2010 07 addition to aspnet mvc localization
  • 如何在类Unix操作系统下方便的运行SBCL代码?

    David James 写了问题和答案 我将对其进行编辑以符合 Stackoverflow 标准 使用 SBCL 您可以将 Lisp 代码编译为机器代码 像 Java net C 甚至 C 一样 您将需要运行时 所以有两种方法来编译 Com
  • CATALINA_OPTS 在 Tomcat 中如何工作?

    我很好奇 CATALINA OPTS 在 Apache Tomcat 的后台如何工作 是的 我知道它在 Tomcat 启动和运行时执行 我添加了一些参数供我的程序使用 甚至我使用它很长时间 将其添加到我的 VM 参数中 但不确定它是如何运行
  • 有条件的承诺

    在我的脚本中 我需要检索一个字典以将编码值转换为名称 ajax retrieve dictionary done function dictionary convert encoded values into names done func