问题标签 [rxjs-observables]

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 投票
2 回答
108 浏览

angular - Twin 订阅 block forkJoin 订阅

这是任何角度组件的 ngInit 中的测试:

ObservableFoo$ 将触发 2 次,这是我需要的行为,这个 observable 将观察到一个在初始化期间可以快速变化的值。

结果是:

并且从不登录。所以,我首先尝试做同样的事情,但只使用 ObservableNotFoo$ 只是为了确保我可以在单个 Observable 上 forkJoin (没用但它有效),然后我用 ObservableFoo$ 尝试了同样的事情,但它不起作用。

似乎 forkJoin 只是不接受会触发两次的订阅。是这样吗?好像真的很奇怪...

** 编辑 : **

0 投票
1 回答
94 浏览

rxjs - RXJS 顺序 HTTP 请求

我想进行顺序 HTTP 调用并将响应合并为一个唯一的可观察对象。

问题是:我这样做的方式似乎是错误的。实际上,我想将第二个请求中的数据合并到第一个请求中,但是我这样做的方式似乎是用第二个请求的结果替换了第一个请求的结果。

这是第一个请求:

第二个:

我想得到的结果是:

需要了解的重要事项:第二个请求需要在第一个请求的响应中提供 vehicule_id。使用我的代码,第二个调用的响应会替换第一个调用的结果,而不是合并它们。

这是我的代码:

0 投票
1 回答
220 浏览

javascript - 如何使用 Angular 8 在重新连接互联网时重新发送失败的 API 请求?

由于互联网连接中断 API 调用失败,我在提交时调用了一些 API 调用。我需要在重新连接时重新发送失败的 API。

0 投票
2 回答
111 浏览

angular - Angular 8 - 在不访问 URL 参数的情况下跟踪显示的组件

我有两个主要组成部分 - 列表和详细信息。在与前两个​​组件中的任何一个都没有父/子关系的第三个组件中,我需要知道当前正在使用/显示哪个组件,并在此基础上执行一些操作。

现在,我订阅了两个组件(列表和详细信息)中的 URL 参数。在两个订阅中,我设置了第三个组件订阅的行为主题(使用 next)。我在列表组件中对 URL 参数的订阅中将行为主题设置为“列表”,并在详细组件中对 URL 参数的订阅中将行为主题设置为“详细”。这就是第三个组件始终知道正在显示哪个组件的方式。

我敢肯定有比打这种乒乓球更好的方法吗?

0 投票
4 回答
455 浏览

angular - 以角度将可观察对象用于 http 请求的最佳方法是什么?

我有一个从 API 获取数据的 Angular 应用程序。所以首先我的detail.component.ts代码看起来像这样:

正如你所看到的,由于将所有这些调用相互嵌套,我将来的调用越多,它就会变得越混乱。我做了一些研究,得到了observables可以解决问题的想法。所以我更改了代码,这就是现在的样子 - data.service.ts

detail.component.ts

Data1必须首先执行,因为Data2Data3需要来自Data1的过滤后的 Array 的信息。这就是为什么我很难应用像forkJoin这样的解决方案。所以我的问题是,如果这是一个好的解决方案,或者您是否知道更好的方法来减少代码混乱并保持功能?

0 投票
1 回答
138 浏览

angular - RXJS:如何获得连接事件?retrywhen:如何挂钩执行?

当 Angular 尝试连接时,我想显示“正在连接”。我可以在第一次连接时做到这一点,但我不知道在使用 retryWhen() 时该怎么做。我需要挂钩实际执行,然后执行:

当前代码:

0 投票
1 回答
712 浏览

json - 如何将 Angular 中 JSON 文件或 REST 响应中的值与服务映射到两个(或更多)打字稿对象的属性中?

虽然我觉得这个答案比较接近我的问题并且得到了一些声誉,但我没有得到正确的答案。我阅读了很多关于如何在 Angular 中使用“新”样式的观察者模式((...).pipe(map(...)).subscribe(...)*ngFor="... | async")的文章,现在还偶然发现了如何在 Angular 中避免 Observables。我不想避免反应性行为;我希望 REST-API 中的更改能够“实时”反映给用户,而无需重新加载观察者。这就是为什么我想将一个对象(以及它的属性)订阅到一个 Observable(以及其中的数据流中的“可能存在”值),对吧?

在我的模板中,我有:

在我的组件中,我有:

作为服务,我有:

此时我运行应用程序的问题是“to-create-on-stream” Attribute-objects 和“nested”Parameters[]-array(通过将Parameter-objects 推入其中创建)_attributes从 httpClient 的 Observable:推入 -array Piping into the http-request and mapping one object after another: undefined

除此之外- 我的构造是从 JSON 文件(或者 API 流,当用户访问 SPA 时可能会发生变化)读取值到 Angular 视图上显示的多个对象的属性的正确方法?

有了上面提到的答案- 或者我认为我必须将它翻译成我的代码的方式 - 我开始怀疑我是否真的理解(并使用)了 Data-Providers <= Observables => Operators => 的反应式 Angular 方式向用户显示订阅者,最后是观察者。

我真的很困惑(如您所见),因为到目前为止我发现的许多答案和描述都使用较旧的模式(在 Angular 5.5 之前?)和/或部分相互矛盾。

我是否在正确的位置处理 API 更改?模板的*ngFor-directives 的数组是否是一个观察者(用 处理| async)或者数组中的变化将由模板后面的模型处理,并且模板获取它的新值(使用插值和属性绑定)以及指令在没有asyncing的情况下更改组件属性?

简而言之: 是否有一个 for-dummies 默认指令将来自 http 请求的值“流式读取”到多个 Typescript 对象中,并且它们的属性同时显示在模板中,并且仅在相关的 DOM 节点中呈现实时更改指令, Angular 8 自以为是的方式?“Stream-reading”的意思是:(仅)在 API 发生变化时拉取和推送,不浪费资源。

0 投票
1 回答
106 浏览

angular - 方法调用完成后可观察的返回值

即使语言 Observable 返回值,getModel() 方法也总是返回具有空名称数组的数组。为什么?

0 投票
0 回答
251 浏览

angular - Angular 6 / 7 / 8 ngbtypeahead 返回匹配和不匹配的记录

我正在从 REST API 中获取记录,并将其显示为输入类型作为预输入功能,在进行 API 调用之前,我必须输入至少 3 个字母。

这是我的 HTML 代码

这是我从 API 得到的响应

这是打字稿文件

现在,当我输入前三个字母时,我应该只在下拉列表中获得一条记录,即“ ALU MINIUM”,而我将获得所有记录,包括ALU MINIUM + 下方的其他颜色。

对此的任何帮助表示赞赏

0 投票
3 回答
310 浏览

java - RxJava - 如果其中一个可观察对象导致错误,如何使平面图继续?

我正在创建一个应用程序,它获取设备上安装的应用程序列表并检查来自 google play 商店的版本更新。

这是我根据包名获取应用信息的方法:

如果包实际上在 google play store 上,它可以正常工作,但retrofit2.adapter.rxjava2.HttpException: HTTP 404如果找不到包名,它会返回(即:sideloaded app)

这是我处理 observables 的方法:

如果所有应用程序都在 Playstore 上,则按预期工作。我想这样做,如果在 Playstore 中找不到一个或多个应用程序它仍然可以对找到的应用程序执行 doSomething(),而忽略没有的应用程序。任何帮助表示赞赏!