JavaScript 承诺混乱

2024-06-07

我正在尝试理解 javascript Promise 的概念。但我遇到了一些问题。我在本地设置了一个非常小的Web服务(不要生气,该Web服务不符合约定)。这里有一些关于它的细节

/login/<username>/<password>==>登录系统,正确的用户名和密码都是noor

如果用户登录,则可以拨打电话/car/<brand>/<color>/<plate_number>,

我没有对颜色、品牌、车牌号的类型进行任何验证

这个工作得很好,我正在记录并添加一辆车

$.ajax({type: "GET",url: url+"/login/noor/noor"})
                .then(function( data, textStatus, jqXHR ) {console.log("login success");},function(){console.log("login error");})
                .then($.ajax({type: "GET",url: url+"/car/1/1/1"}))
                .then(function(){console.log("car added");},function(){console.log("car not added");});

这完美地显示了一个错误,因为使用了无效的 url:

$.ajax({type: "GET",url: url+"/carasdsad/1/1/1"})
                .then(function(){console.log("car added");},function(){console.log("car not added");});

“/carasdsad/1/1/1”是无效网址并且车未添加被返回

我遇到了这个问题。下面的代码使用上面的代码。我正期待着车未添加待展示但它正在展示已添加汽车

$.ajax({type: "GET",url: url+"/login/noor/noor"})
                .then(function( data, textStatus, jqXHR ) {console.log("login success");},function(){console.log("login error");})
                .then($.ajax({type: "GET",url: url+"/carasdsad/1/1/1"}))
                .then(function(){console.log("car added");},function(){console.log("car not added");});

上面的代码正在返回已添加汽车虽然“/carasdsad/1/1/1”第二次调用中的 url 无效。


根据spec http://promises-aplus.github.io/promises-spec/#point-24,非函数参数被忽略then method.

您的代码减少到最小情况如下所示:

Promise.resolve(true)
    .then(Promise.reject("some err"))
    .catch(console.log.bind(console, "fail"));

为了捕获错误,需要以这种方式重写它:

Promise.resolve(true)
    .then(function(){ return Promise.reject("some err") })
    .catch(console.log.bind(console, "fail"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 承诺混乱 的相关文章

随机推荐

  • 如何在iPhone sdk静音模式下播放声音文件?

    如何在iPhone sdk静音模式下播放声音文件 我正在尝试以静音模式播放声音文件 但结果为零 我试过这段代码 SystemSoundID soundID AudioServicesCreateSystemSoundID CFURLRef
  • iPhone – 类似 Photoshop 的效果

    我可以在 iPhone 中制作乘法 屏幕 颜色或其他类似 Photoshop 的效果吗 Check 石英演示 http developer apple com iphone library samplecode QuartzDemo ind
  • 如何复制具有 MySQL 中保留的键和其他结构特征的表?

    如何复制保留键和其他结构特征的表 包括主键 外键和索引 这可以通过单个 MySQL 查询来完成吗 我正在使用 create table newtable as select 但此方法会使所有键和索引丢失 无法使用单个查询来从另一个表复制一个
  • VBA 用户表单:防止组合框在 KEYDOWN 时转义

    社区 有一种方法可以防止活动组合框在列表末尾 或开头 按下向下箭头 或向上箭头 时失去焦点 如果有更好的方法来做到这一点 最好使用 MS 标准属性 请分享 问题 当位于组合框中列表的末尾时 如果您点击向下箭头 它会将您移至活动组合框下方的任
  • VSTS 任务组 Powershell 参数

    我使用具有四个参数的 Azure Powershell 任务内联脚本创建了 VSTS 任务组 我已将此任务组添加到发布定义并配置参数 当我尝试释放时失败并出现以下错误 2018 03 23T10 28 42 2811600Z 错误 在 C
  • 使用 swank-clojure 攻击 Clojure 库的工作流程

    Clojure 库的黑客攻击有典型的工作流程吗 假设我的应用程序 Foo 依赖于第三方库 Bar 该库是从存储库获取的 并通过以下方式包含在项目 Foo 中lein deps 然后 假设我想破解 Bar 库 所以我从 github 克隆它
  • 在VBA中使用for循环调用连续的变量名(即car1,car2...car10)

    设想 我有七个变量 labelKid1 labelKid2 LabelKid3 我正在搜索单元格以查找不为空的单元格 然后将值输入到标签中 从 labelKid1 开始 然后转到下一个标签 问题 有没有办法让我们使用 for 循环来遍历这些
  • android.provider.Settings.ACTION_BLUETOOTH_SETTINGS 在三星上崩溃

    任何人都知道为什么 Intent pairIntent new Intent android provider Settings ACTION BLUETOOTH SETTINGS startActivityForResult pairIn
  • 是否可以为 DialogFragment 制作动画?

    我尝试了有关片段动画的各种示例 但没有任何反应 所以 DialogFragment 不是 正确的 片段吗 或者我在这里遗漏了什么 FragmentTransaction ft getFragmentManager beginTransact
  • 管理员无法管理 SQL Server 报告服务

    我正在 SQL Server 2008 Standard 上运行 SQL Server Reporting Services 并尝试使网页正常工作 我需要做什么才能获得 RS 报表管理器 报表服务连接 首先将我视为管理员 以便我可以更改我的
  • Spring.Net可以起到PostSharp的作用吗?

    几个月前 我发现了 PostSharp 有一段时间 它非常棒 但随后法律部门回复说他们不喜欢旧版本的许可证 然后部门告诉我2 0的价格高得令人无法接受 对于我们需要的座位数量 我非常失望 但并不沮丧 我想 这不可能是唯一的这样的框架 我一直
  • R:如何在不耗尽内存的情况下重新绑定两个巨大的数据帧

    我有两个数据框df1 and df2每个都有大约 1000 万行和 4 列 我使用 RODBC sqlQuery 将它们读入 R 没有任何问题 但是当我尝试rbind他们 我收到了最可怕的 R 错误消息 cannot allocate me
  • Go 编程 - 使用指针绕过访问权限

    假设我的项目有以下层次结构 fragment fragment go main go 并且在fragment go我有以下代码 只有一个 getter 没有 setter package fragment type Fragment str
  • Colab 的使用限制持续多久?

    当我对同一帐户的两个笔记本同时使用两个 GPU 约半小时后 Colab 已 12 小时未运行 此消息不断弹出 由于 Colab 中的使用限制 您当前无法连接到 GPU 自从我上次使用 colab 以来已经过去了大约两个小时 但该消息仍然弹出
  • iOS 11 /“Apps-prefs=root”功能在更新到 Swift 3 后不起作用

    我对 Swift 编程还很陌生 我制作了一个简单的测试应用程序 可以通过特定按钮以编程方式打开设置 不幸的是 更新按钮后 没有打开所需的设置页面 在本例中为 wifi 页面 而是仅打开通用设置屏幕 有人可以帮助我了解 swift 4 中究竟
  • 为什么 youtube.com 解析后的 IP 会指向 google.com? [复制]

    这个问题在这里已经有答案了 这可能是一个非常愚蠢的问题 但我很好奇 对 youtube com 的 ping 显示解析的 IP 为 74 125 127 93 现在 如果你在浏览器中访问这个IPhttp 74 125 127 93 http
  • 从 firestore 返回嵌套集合作为 angularfire2 和 firebase 的对象

    假设您有以下结构 shopping carts collection shopping cart 1 doc dateCreated field items collection shopping cart 2 doc dateCreate
  • 对于 Web 应用程序来说,您理想的 git 分支架构是什么?

    我们是一个由开发人员组成的小团队 正在构建 Web 应用程序 我们目前拥有一个实时 测试和多个开发环境 您会建议什么分支架构 以便理想情况下每个开发人员都可以处理他的功能 这些功能可以在不影响其他开发人员 功能的情况下进行测试和部署 目前
  • 类型错误:login() 需要 1 个位置参数,但给出了 2 个

    我使用内置身份验证 django 编写了一个登录视图auth login 我的代码给出了上述错误 错误代码为 o 500 from rest framework response import Response from rest fram
  • JavaScript 承诺混乱

    我正在尝试理解 javascript Promise 的概念 但我遇到了一些问题 我在本地设置了一个非常小的Web服务 不要生气 该Web服务不符合约定 这里有一些关于它的细节 login