在节点中使用 zone.js 挂钩

2024-02-07

我正在尝试使用编写一个简单的演示角度/zone.js https://github.com/angular/zone.js在节点中,但由于某种原因既没有beforeTask or afterTask正在被召唤。

这是我正在运行的代码:

require('zone.js');

function foo () {
  Zone.current.fork({
    name: 'foo_zone',
    
    beforeTask: function () {
      console.log('~~~ ZONE START ~~~');
    },
    
    afterTask: function () {
      console.log('~~~ ZONE END ~~~');
    }
  })
    .run(function () {
      console.log('in the zone');
      console.log('Zone.current.name', Zone.current.name); // prints foo_zone
      setTimeout(() => {
        console.log('timeout is up');
      }, 1000);
    });
}
foo();

现在,在区域内,一切都打印得很好,包括区域名称,但两个钩子都没有被调用。

我是否缺少 zone.js + node.js 的一些基本功能?

(使用节点 v5.0.0、zone.js 0.6.23 运行)


这是示例存储库。https://github.com/JiaLiPassion/zone-node https://github.com/JiaLiPassion/zone-node

首先,你需要使用最新版本的zone.js 要在nodejs中使用zone.js,您应该需要zone-node.js, 以下是一个运行示例。

require('./zone-node.js');

function log(str) {
  Zone.root.run(function() {
    console.log(str);
  });
}
function foo() {
  Zone.current.fork({
    name: 'fooZone', 
    onScheduleTask: function(delegate, curr, target, task) {
      log('Zone begin to schedule task not async yet ' + task.source);
      return delegate.scheduleTask(target, task);
    },
    onInvokeTask: function(delegate, curr, target, task, applyThis, applyArgs) {
      log('~~~~Zone before invoke async callback~~~~' + task.source);
      delegate.invokeTask(target, task, applyThis, applyArgs);
      log('~~~~Zone after invoke async callback~~~~' + task.source);
    },
  }).run(function() {
    log('current zone, ' + Zone.current.name);
    setTimeout(function() {
      log('timeout is up, ', Zone.current.name);
    }, 100);
  });
};

foo();

在nodejs中运行后,输出将是。

current zone, fooZone
Zone begin to schedule task not async yetsetTimeout
~~~~Zone before invoke async callback~~~~setTimeout
timeout is up,
~~~~Zone after invoke async callback~~~~setTimeout
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在节点中使用 zone.js 挂钩 的相关文章

随机推荐

  • 如何让主机网络与 docker swarm 模式配合使用

    From this PR https github com moby moby pull 32981 issuecomment 300883830最近被合并到 docker 的 17 06 候选版本中 我们现在支持带有 swarm 服务的主
  • 如何关闭 gcc 中的特定优化标志

    我想使用优化 O1 进行编译 但它打开了一个我不想使用的标志 我该如何关闭它 通常有一个等效的 否 标志 例如 fstrict aliasing可以通过以下方式关闭fno strict aliasing 检查 gcc 文档以获取更多标志
  • 嵌入式 cocos2d-js 应用程序可以回调 C++ 吗?

    我正在研究通过将 cocos2d js 作为视图嵌入现有 iOS 应用程序中来使用它的可能性 为了完成这项工作 我需要在 cocos2d 和周围的应用程序之间进行双向通信 经过一些初步调查 我确定可以致电in到 cocos 使用Script
  • C# 中的空参数检查

    在 C 中 是否有任何好的理由 除了更好的错误消息之外 向每个 null 不是有效值的函数添加参数 null 检查 显然 使用 s 的代码无论如何都会抛出异常 这样的检查会使代码变慢并且更难维护 void f SomeType s if s
  • BufferedReader.readLine() 不读取并挂起系统(等待)[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions BufferedReader rea
  • \n\r 是什么意思?

    当通过 java 从伪终端读取时 我在文本中看到 n r 那个代表是什么 注意它不是我熟悉的 r n n是换行符 ASCII 代码 10 r是回车符 ASCII 代码 13 不同的操作系统使用这些字符的不同组合来表示文本行的结尾 类Unix
  • Silverlight 4 程序集共享问题

    我有一个引用 Silverlight 4 类库的 WPF NET 4 0 类库 SL 库编译得很好 但是当我编译 WPF 类库时 我得到 Error 2 Unknown build error Cannot resolve dependen
  • 如何快速动态加载经常重新生成的c代码?

    我希望能够动态生成 C 代码并将其快速重新加载到我正在运行的 C 程序中 我在Linux上 这怎么办 Linux 上的库 so 文件可以在运行时重新编译和重新加载吗 是否可以在不生成 so 文件的情况下对其进行编译 编译后的输出是否可以以某
  • 循环访问多个正则表达式提取器输出

    您能告诉我如何循环遍历返回多个值的正则表达式后处理器的结果吗 Example JSON 响应消息 reply code 111 status SUCCESS customerID 222 a b 333 44 4 s 555 666 777
  • AssertionError IDEA 输出中的字符编码

    我正在使用 IntelliJ IDEA 12 0 4 进行一些测试 当我使用 JUnit4 框架运行一个时 我的断言错误如下所示 java lang AssertionError Status should be expected true
  • Apple 拒绝,因为 UIBackgroundModes = location

    我提交了一个应用程序 它按照用户选择的固定时间间隔 5 分钟 10 分钟 30 分钟 1 小时 跟踪用户的位置 并将其发送到服务器 该应用程序也应该在后台运行 发送请求 我已将其声明为UIBackgroundMode location 我能
  • 如何将复杂的 SQL 查询转换为 Zend_Db_Select 语句?

    MySQL 网站有一个优秀的教程 http mikehillyer com articles managing hierarchical data in mysql 在数据库中存储分层数据 我正在尝试编写返回节点的直接子节点的查询 我不想只
  • 如何在android上创建永久后台服务

    我正在经历一场噩梦 试图在 android 上创建一个永久运行的简单后台服务 该服务将执行一些后台任务 例如池用户社交媒体和显示通知 因此它只需要一次用户交互 登录 之后应该能够永远运行直到最后一天 但这并没有发生 这是我的清单
  • viewflow.io:实现队列任务

    我想用以下用例来实现ViewFlow库 http viewflow io Problem 由用户启动的特定 Flow 的进程必须在执行 celery 作业之前在队列中等待 每个用户都有一个这些进程的队列 根据计划或手动触发 允许队列中的下一
  • 如何以编程方式在视图上同时应用平移和缩放动画

    如何在视图上应用带有缩放动画的平移动画 我必须将视图移动到另一个视图位置并同时缩小 如何将视图从其位置缩放到另一个视图位置 第二个视图不固定 startView 翻译的视图 finishView 动画结束的地方 代码 private voi
  • Python:什么是标题? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我对 Python 和一般编程都很陌生 我在大学修读一个模块 要求我用 Python 编写一些相当基本的程序 然而 我在上次作业中得到了这样
  • 将 musicbrainz URI 映射到 Spotify URI

    有谁知道如何找到给定艺术家 专辑的 musicbrainz URI 的 Spotify URI Spotify 的 web api 不能解决我的问题 因为我想映射所有 musicbrainz 艺术家和专辑 但速度很慢 您应该能够使用 Ech
  • Android Studio 3.1:找不到 org.jetbrains.trove4j:trove4j:20160824

    昨天 我将 Android Studio 更新到 3 1 但收到此错误 Could not find org jetbrains trove4j trove4j 20160824 Searched in the following loca
  • Blobstore 上传 + Ajax/替代方案

    下面的代码可以完美运行 我唯一关心的是我想将下面的内容转换为 AJAX alternative 这样就不需要刷新整个页面来提交此请求 如果可能的话 还包括加载进度条等
  • 在节点中使用 zone.js 挂钩

    我正在尝试使用编写一个简单的演示角度 zone js https github com angular zone js在节点中 但由于某种原因既没有beforeTask or afterTask正在被召唤 这是我正在运行的代码 requir