问题标签 [subject-observer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
46 浏览

angular - 处理异步事件列表并在它们全部完成后继续的优雅方式是什么?

我正在构建一个 Angular 应用程序。在我的组件的构造函数中,我从服务器发起了对几个元素的请求,这些元素自然是异步发生的。这些请求作为rxjs/Behavior我订阅的对象返回给我。

我需要做的是在最后一个返回后立即继续处理。但我需要确保它们按照提交的顺序进行处理,而不一定按照返回的顺序进行。

我可以创建一个 janky hack 来检测最后一个返回的时间:

这有效。但它很难看,不容易理解,也不是我所说的生产就绪代码。

一旦完成了一系列主题,Angular 做某事的方式是什么?

0 投票
1 回答
94 浏览

angular - RxJs 订阅不会在根角度模块中触发

我有一个组件可以监听 http 调用以显示加载器。我有微调器组件和具有微调器事件 $ Angular4 事件发射器的微调器服务。这是我的组件构造函数。

对于角度应用程序,正在使用延迟加载。问题是我想将此组件添加到路由器插座下方的 app.component.html 中,但这样做时,我的订阅方法永远不会被触发。订阅按照我的日志中的定义显示。当我在子模块上放置相同的组件时,订阅开始工作。微调器组件和微调器服务都在一个已注入 app.module.ts 的共享模块中。我不确定是什么导致了订阅行为的这种差异。

0 投票
2 回答
15837 浏览

angular - 异步管道不适用于主题

我在服务中有以下 BehaviorSubject:

我在一个组件中使用它如下:

在模板中我做了类似的事情:

问题是我没有看到两者中的任何一个li,尽管假设是第一个应该出现,因为我将 Subject 的初始值分配给 false。

我究竟做错了什么?

0 投票
1 回答
674 浏览

javascript - 角度主题不更新表格

我一直在学习有关 LinkedIn Learning 的课程,但单击列表并让值填充表单对我不起作用。我是 Angular(和开发)的新手,如果这很愚蠢,或者我没有正确描述它,我深表歉意。

我有 2 个组件和一个 API 服务文件从 ASP.Net Core API 中提取数据:

  1. 列表代码
  2. 添加代码
  3. api

列表代码.component.html

列表代码.component.ts

添加-code.component.html

添加-code.component.ts

api.service.ts

列出代码工作正常。

问题似乎只是单击并让列表中的代码填充添加代码表单中的值(它在视频教程中有效),但它对我不起作用。我假设我错过了一些明显的东西?

我做了一些阅读,每个人似乎处理 Subject Observables 略有不同,我显然只是错过了重点!

为简洁起见,我提供了我认为相关的片段。如果我忽略了一些重要的内容,请告诉我。

欢迎任何帮助!

干杯,亚当

0 投票
2 回答
2206 浏览

angular - 在管道中订阅主题不起作用;角4

我正在努力订阅 Angular 4 中的选择下拉更改。我的searchType变量的更改仅在test()通过单击事件调用函数后可见,但我需要 Angular 立即订阅更改。

边注:

  • 我正在订阅过滤器管道。
  • 模块中提供了服务,因此在同一个实例上工作

App.component.html

应用组件.ts

服务.service.ts

最后filter.pipe.ts订阅更改

我哪里做错了 ?将不胜感激任何解决方案。

0 投票
1 回答
1204 浏览

angular - Angular RXJS Observables 或 Subjects 在内部传递数字

在 Angular 5 应用程序(无 API)中传递数字的正确 RXJS 方法是什么?

我已经成功通过了一个带有 Subject 的布尔值:

服务 :

发射器:

听众:

我在听众中作弊,因为我不存储接收到的值,而是评估它并重新创建布尔值。

为我工作,适合很少的几行。

我不能对数字做同样的事情。

在此处输入图像描述

我将如何处理数字?用数组?

谷歌和许多 RXJS 信息源一无所获。

0 投票
3 回答
12720 浏览

angular - Subject and Observable, how to delete item, filter() list and next()

I have a list of songs setup with Subject and Observable (shown with | async in view), and now I want to delete a song off the list, do some filter() and call next() on the Subject.

How and where do I filter? Right now I am doing getValue() on Subject and passing that to next() on, well, Subject. This just seems wrong and circularish.

I also tried subscribing to the Subject and getting the data that way, filtering it and calling next() inside subscribe(), but I got a RangeError.

I could filter the Observable by storing all deleted id's. The Subject's list then becomes out of sync by having deleted songs on there and also every observer would have to have the deleted-id's-list which seems ludicrous. I'm rapidly growing old and mental. Please help me internet :(

0 投票
4 回答
9545 浏览

typescript - 包装一个 Observable。在每个发出的值之前和之后做一些事情

我想构建一个包装类,它在 Observable 的每个发射值之前和之后做一些事情。

这是我想出的:

控制台输出应该是:

我不知道如何连接$wrappedObservable 与_dataSubject.

但也许我完全错了,它需要一种不同的方法。

0 投票
1 回答
90 浏览

angular - 是否可以使用主题或行为主题在角度 5 中进行父母之间的交流

是否可以使用主题或行为主题在 Angular 5 中进行父与父通信。例如:ListComponent 和 DetailComponent。两者都是不同的组件和视图。当我单击 ListComponent 中表单的保存数据时,它应该路由到 DetailComponent 页面。然后在编辑表单中显示数据。

我知道父母对孩子或孩子对父母是可能的。但我的情况是父母对父母。就像我们调用 .next 时一样。它也应该在下一页中给出数据。这就像在不同组件之间传递 json 对象。如果这不起作用,唯一的选择是设置 localStorage 并在下一页中检索。

这可能是一个错误的问题,但如果有任何可能的方法会有所帮助。

0 投票
1 回答
6565 浏览

javascript - 为什么管道 BehaviorSubject 会在 RxJS 中创建 AnonymousSubject?

在创建 RxJS 时BehaviorSubject,它会一直保持 aBehaviorSubject直到它被pipe'd 。一旦pipe返回一个 'd 版本,它就会变成一个AnonymousSubject.

例子:

我也遇到同样的问题ReplaySubject。我似乎无法通过主题管道并返回该主题。它总是转换为AnonymousSubject. 我认为我在这里寻找的是类似 Promise 的行为,我可以从任何地方订阅这个 observable 并获取传递给它的一个值。