angularjs - 控制器中的承诺从未得到解决

2024-01-02

在我的控制器中,我得到了另一个服务的承诺。我向其中添加了一个“then”子句,但“then”从未被调用。

看看这个笨蛋:http://plnkr.co/edit/dX0Oz1?p=preview http://plnkr.co/edit/dX0Oz1?p=preview (JavaScript 版本 http://plnkr.co/edit/tB1W6gND68GVlCNKV8H4)

'fakeLongRunningPromise' 创建一个在 2 秒后自行解析的 Promise。

在控制器本身中,一旦承诺得到解决,我就会向控制台发送一条注释。

我可以看出承诺正在得到解决,因为“正在解决承诺”它输出到控制台。为什么它不输出“承诺已解决”?

认为承诺可能会因为控制器返回而“超出范围”?


AngularJS 的 Promise 解析结果是在 $digest 循环内异步传播的。所以,回调注册了then仅在进入 $digest 周期时才会被调用。这setTimeout执行“AngularJS 世界之外”,因此不会触发回调。

解决方案是使用Scope.$apply or the $timeout服务。这是带有 $apply 的版本:

      window.setTimeout(function() {
        console.log("Resolving promise");
        $scope.$apply(function(){
          deffered.resolve("worked");
        });
      }, 2000);

这是一个固定的 plunk (JavaScript):http://plnkr.co/edit/g5AnUK6oq2OBz7q2MEh7?p=preview http://plnkr.co/edit/g5AnUK6oq2OBz7q2MEh7?p=preview

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

angularjs - 控制器中的承诺从未得到解决 的相关文章

  • 如何删除 ng-repeat 的默认顺序

    如何停止动态表数据的 ng repeat 内部的默认排序 目前我收到以下订单 地址 客户 ID 姓名 但我想要的是以下顺序 客户 ID 名称 地址 任何帮助我将不胜感激 JS app controller MyController func
  • Angularjs 手表服务对象

    为什么我无法观看服务中的对象 我有一个简单的变量可以工作 但是一个对象不能工作 http plnkr co edit S4b2g3baS7dwQt3t8XEK p preview http plnkr co edit S4b2g3baS7d
  • 导航嵌套组件时创建面包屑 (Angular 2)

    我正在为此苦苦挣扎 这个想法是有一个组件 当浏览子视图时更新面包屑 例如
  • 用户脚本 - 有没有办法将 jquery 代码注入 angularjs dom?

    所以我正在尝试为一个网站创建用户脚本 我无法更改网站的任何源代码 因为它不是我的 网站到处都使用 AngularJS 控制器 我研究了几天如何做到这一点 但没有成功 所以我尝试注入代码 nav after div test div 当我通过
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 如何使用 ng-repeat 复选框和 Angularjs 过滤表格

    曾几何时 这是可行的 但不知何故它被破坏了 我希望能够使用 ng repeat 生成复选框 以根据存储的数据获取所需数量的复选框 并使用它们来过滤生成的表 此外 我不希望重复复选框的相同值 我用代码做了一个plnkr div class r
  • 如何在 AngularJS 中从 ng-include 切换控制器值?

    我正在使用 AngularJS 我有一个header html我已经使用 ng include 将该 html 页面合并到另一个 html 中 另外 我有一个下拉列表header html我希望显示所选值 从下拉列表中 列表 我怎样才能做到
  • 如何使用 ng-repeat 更改 AngularJS 中特定 的背景颜色

    如何为每一行设置不同的背景颜色 举个例子 第 1 行 蓝色 第2行 红色 第三行 绿色 main js scope names fName John lName David fName Richard lName Daniel fName
  • AngularJS 仅在解析时返回两个 http get 请求

    我有一个 Angular 应用程序 在控制器中我需要调用一个发出两个 http get 请求的函数 并且我需要这个函数在解析这些值时返回这些值 我无法在 routeProvider 中解析它们 因为此函数需要在同一控制器中获取值 我展示了控
  • ngRepeat 中的函数执行过于频繁

    我有三个tabs里面有不同的htmlng include 这些选项卡使用以下方式显示ng repeat 只有一个 HTML 模板包含函数调用 但它执行了 3 次 每个模板执行一次 ng repeat迭代 这里出了什么问题以及如何解决它 va
  • 如何使用 Angularjs 检查模块中的指令或控制器是否可用

    在 angularjs 中 给定一个模块 如何检查给定一个模块是否存在指令 控制器 我有一个模块 我想知道是否已加载某些特定指令 下面是一些示例代码 var module angular module myModule check if c
  • Jhipster 生成器跳过 --skip-server 处的身份验证代码

    为什么当我们使用 skip server 生成项目时 哟 jhipster skip server 部分身份验证丢失 在 AJS A2 上 是吗 每次我需要粘贴部分代码 Angular 上的 AuthServerProvider 或 Ang
  • 到子级的角度路由 - 来自不同父级的子级

    我正在使用打字稿进行角度路由 但面临一些路由问题 流程似乎是 我真正想做的是通过Child Child2的一部分 其ID为Child1的Child 路由 但它不显示页面 Child1 用于插入 更新的所有路由都驻留在 Child1 中 而
  • 如何在滚动时保持这些 tagHover 的位置靠近标签并且 tagHover 具有固定位置?

    https plnkr co edit PuP3f71kCjkqgjjMkgNS p preview https plnkr co edit PuP3f71kCjkqgjjMkgNS p preview 下面还有一个 stackoverfl
  • 切换按钮不适用于 AngularJS 和 Angular ui Bootstrap

    切换按钮出现 但不起作用 我现在在网上也有相同的代码 但它不起作用 但在 Plunker 中它可以工作 Plunker 切换按钮正在工作 http plnkr co edit R5F5D1FGyHiv9X1cfOoa p preview 在
  • 指令中的 Angular + 茉莉花 + 模拟 $stateParams

    在指令中模拟 stateParams 的最佳方法是什么 stateParam成员会根据测试而改变 我可以使用 controller ctrl stateParams 轻松模拟控制器中的 stateParams 但不知道如何修改注入指令的 s
  • AngularJS 指令的完整列表?

    我正在学习 AngularJS 是否有所有开箱即用指令的完整列表 这FAQ http docs angularjs org misc faq提及ng repeat ng show and ng class 但我感觉还有更多 奇怪的是我找不到
  • AngularJS 中的 foreach 循环

    我正在经历forEach loop in AngularJS 有几点我不明白 迭代器函数有什么用 没有它还有什么办法吗 如下所示的key和value有何意义 angular forEach scope data function value
  • AngularJS:初始化指令内的隔离范围

    我创建了一个指令 它接受一些属性并使用这些属性初始化隔离范围 如果未指定属性 则应使用计算值初始化隔离范围 我添加了一个链接函数 用于检查范围并初始化默认值 如果未使用属性设置值 范围已初始化 但如果我设置默认值 那么它稍后会被框架覆盖 一
  • 如何在 AngularJS 循环内使用标签

    所以我在里面ng repeat像这样 li li

随机推荐