问题标签 [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.
angular - 使订阅在 Angular 4 中等待主题
我的 HTML 中有一个文本字段,它根据输入的文本实时调用后端服务。如果用户输入“abc”之类的内容,我的服务将返回一个具有此“abc”名称的对象数组。
我为此使用 Observable 和 Subject ,并且我在我的组件中返回已处理的服务。请看代码。
HTML 代码
组件代码
当 II 键入“abc”时,它会调用此fetchSearchStringData方法。服务调用只不过是简单的 restService.post 调用,然后设置对象是可观察的。使用该数据过滤某些内容并返回最终的数组。
但是我的组件 .subscribe 我们第一次被调用,并且只有一次,它显示了未定义的值。(我被安慰的地方。记录“结果”)。
我如何确保在订阅组件时从服务返回后获取数据?
提前致谢。
ios - RxSwift 触发可观察执行
我有一个Subject
可观察的表示需要传递给多个订阅者的网络请求的结果。
我可以使用ReplaySubject
缓冲区 1 和publish()
方法。但是,网络请求只执行一次。
我想在将来的任何给定点触发 fetch 事件。如何触发新请求?
目前,我有一个Service
包含 的对象,ReplaySubject
并且有一个reload()
触发网络请求并将结果发布到 a 的方法ReplaySubject
。
是否有任何方法Observable
可以“刷新”它并向所有当前订阅者提供新价值?
rxjs - 代理一个 Observable 并在回调中连接它
我试图返回一个Observable
在回调中异步创建的:
因此,我使用 aSubject
作为订阅Observable
回调底层的单播代理。
这个解决方案的问题是,当我取消订阅Subject
' 订阅时,取消订阅不会转发到底层Observable
. 看起来我需要某种类型的引用来在Subject
没有更多订阅者时取消订阅,但是在这种命令式回调样式中使用它时我无法弄清楚。
我必须保持mkAsync
空白,并正在寻找替代实现。
这是正确的方法吗?是否有使用 的替代解决方案Subject
?
取消订阅主题时,如何确保Observable
取消创建的(unsubscribe
在 上调用)?Subscription
angular - Angular 6 RxJs:尝试使 obj 可观察以用于其他组件
服务
零件
问题
我正在尝试设置一个可从许多组件读取和写入的 Observable。如上所示;我在我的服务中设置了 observable,但我的组件getMode()
不起作用。任何想法为什么?
android - RxJava PublishSubject+Debounce:第二项未发出
我想使用 PublishSubject + debounce(在订阅逻辑中)延迟发射我的项目。这是我的代码:
订阅逻辑:
并发出对象逻辑:
但是在订阅时,我只收到第一个发出的项目(obj1)。如果我再次发出两个对象(obj3,obj4),我只会收到第一个发出的项目(obj3)。
如何解决?
javascript - 可观察订阅函数中的值不正确
我已经使用 BehaviorSubject 编写了一个自定义事件总线。它只是在发布者发布事件时执行订阅者传递的订阅。事件总线逻辑似乎工作正常,但订阅执行时我的局部变量没有正确更新。以下是代码:
这是一个简单的逻辑,它检查 map 对象的 menu 属性是否为 false,然后它会做一些工作并将其设置为 true,这样当再次调用订阅时,相同的逻辑不会被执行两次。
问题:由于某种原因,第二次调用订阅时,菜单属性仍然为 false。我了解 js 的异步行为,但这次对我来说并没有增加。
以下是输出:
问题出现在第 679 毫秒。当对象属性在第 678 毫秒设置为 true 时,为什么它在第 679 毫秒显示为 false?
编辑:如果它是像 Java 这样的其他多线程语言,我会假设不能保证执行顺序。稍后的执行(679)可能仍然会获得 this.map["menu"] 的旧值,因为线程可能未同步。但这是单线程 Javascript,可以保证在 678 处更改变量后执行 679 处的代码。没有什么能改变这一事实,比如结果的值等。
编辑:可能BehaviourSubject
是这里的罪魁祸首吗?是不是通过某种方式内部功能BehaviourSubject
不能保证执行顺序?
rxjs - 主题的 RxJS 主题
我正在尝试创建一个下载资产列表的主题,该列表为每个资产发送操作,如果可能的话,使用主题的主题?
这些文件似乎正在下载等。我可以控制台记录进度 - 当我尝试映射结果时,什么都没有被触发。
这是因为我是从订阅开始的吗?
angular - Angular 6 - 行为主题:刷新后获取数据
我正在尝试在课程详细信息组件和课程播放组件之间传递数据。我使用了共享服务和 BehaviorSubject。数据通过服务正确传递到课程详细信息,当通过课程详细信息 html 页面转到课程播放 html 页面时,它工作得很好,但是当我刷新页面时,它使用的是我在服务。我需要找到一种方法让 id 在从 course-play 获得它后一直留在服务中,并在我获得另一个课程 id 时保持更新。这是我的代码:
课程.ts
课程服务
course-detail.component
课程播放组件
angular - RxJS 和 Angular 6 - 可观察对象、主题和基本的获取和添加数组操作
我正在努力围绕可观察对象/观察者/主题和角度来思考。我浏览了许多涵盖可观察基础知识的教程,并且基本订阅方案很有意义。然而,这些教程似乎并未涵盖添加到可观察集合中。他们中的大多数似乎也专注于使用 HttpClient,而我试图在不依赖 Web 服务的情况下模拟一些数据 - 只是用于测试的基本内存中对象数组。
我创建了一个简单的应用程序来展示我的困惑。
组件 1 和服务 1 展示了获取数字集合和添加新数字的基本不可观察方式。组件 2 和服务 2 展示了一种可观察到的获取数据并由于订阅而自动获取更新的方式。我正在使用主题来做到这一点。
https://github.com/rpaschnikov/observable-test-app
谁能指出我是否走在正确的道路上,还是我完全误解了可观察到的模式?我需要在这里使用主题还是应该能够坚持使用 Observables?如果是这样 - 我如何从中提出 next() 通知?最重要的是,有没有人知道为什么第一个this.subject.next()
不触发更新,而进一步调用呢?
谢谢大佬!!
angular - 如何将对象添加到可观察的数组中
我有一个带有名为 BookService 的服务的 Angular 项目。
该服务帮助我监视书籍列表中的更改,我还希望能够使用 addBookToList 函数将一本书添加到列表中,但我不知道如何将一本书添加到 this observable(主题观察者) 是否可以添加一本书