javascript - 为什么 Angular 2 的 CanActivate 返回 Observable<boolean> 而不是 Promise?

标签 javascript angular rxjs rxjs5

CanActivate class允许 Observable<boolean>返回类型。

唯一对我有意义的用例是:

  1. CanActivate可以“异步”阻止显示的路由,直到 observer.next(true|false)被称为。
  2. 我可以显示一条路线 CanActivate然后允许推送 observer.next(false)从我的应用程序的另一部分并让该路线消失。

但是,第一点有效但第二点无效。因此我找不到 CanActivate 的原因应该允许返回类型 Observable<boolean>除了方便之外——这反过来又使 API 复杂化。如果 CanActivate 会更干净只允许 boolean返回类型和 Promise .

请注意,我是 Angular、RxJS 和所有基于 Node 的新手,所以我可能会遗漏一些显而易见的东西。我花了一段时间试图从 CanActivate 中提取功能那Observer<boolean>返回类型暗示。

最佳答案

在 AngularJS 2 中,几乎每个异步操作都会返回 Observable。因为您可以实现自己的 CanActivate,所以您可能希望通过服务器访问来实现。例如,检查服务器中的管理员凭据。你可以看到类似的例子 here .

如果此方法返回 bool 数据类型,您需要阻止该页面才能这样做。

关于javascript - 为什么 Angular 2 的 CanActivate 返回 Observable<boolean> 而不是 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38883203/

相关文章:

javascript - 如果表格包含在其他表格中,则表格排序器宽度 100% 不起作用

javascript - jQuery 数量(输入值)+/- 按钮在 IE7 上不起作用

javascript - 单击后在 Json 上创建一个新对象(http.put)

javascript - RxJS:我怎样才能使用 event.preventDefault() 来处理掉落事件?

angular - Angular 5 中使用 rxjs 进行持久订阅

reactive-programming - 从数组创建无限可重复的 Observable

javascript - 无法设置未定义 4 的属性 'size'

javascript - 尝试制作基本选项卡

node.js - 如何解决这个终端问题

javascript - angular 4 如何访问 ViewChildren _results