首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将RxJ中的两个流和更多的流组合在一起?

如何将RxJ中的两个流和更多的流组合在一起?
EN

Stack Overflow用户
提问于 2019-01-16 21:24:10
回答 2查看 604关注 0票数 1

我有一种反应式。当我输入和停止3秒-它应该console.log(form.value)。但是,当我单击submit - console.log(form.value)时,应该立即对其进行记录,并防止生成等待3秒的以前的console.log()。在我输入的时候--而不是按submit --它应该在3秒后再次输入console.log()

我对RxJ很在行。我刚刚弄明白了如何使用debounceTime()操作符来完成第一部分。但是,我无法理解如何将提交事件“注入”到表单的流中,并防止它从console.log()中消失;

stackblitz链接

component.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form [formGroup]="form" (ngSubmit)="onSubmit()">
  <input type="text" formControlName="name" placeholder="name"><br>
  <input type="text" formControlName="age" placeholder="age"><br>

  <button>Save</button>
</form>

component.ts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class AppComponent implements OnInit  {
  form: FormGroup;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    this.form = this.fb.group({
      'name': [],
      'age': []
    });

    this.form.valueChanges.pipe(
      debounceTime(3000)
    ).subscribe(value => console.log(value));
  }

  onSubmit() {
    console.log(this.form.value);
  }
}

预期行为:

当我打字时,停止2秒-什么都不会发生,如果我停止了3秒或更多,然后console.log(form.value)

当按下submit应立即console.log(form.value),并取消先前等待的第一个案例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 00:38:49

解决方案:https://stackblitz.com/edit/angular-gn1dwx

所以,在溪流中,我们有:

  • 呈流
  • 一连串被取消的变化事件。

我们希望避免重复事件。因此,我们合并我们的两个流,并添加distinctUntilChanged操作符以避免重复的值。我们序列化/反序列化,因为我们不希望对实例进行不同的操作,而希望对值进行操作。

若要清除此组件被销毁时的订阅,我们使用takeUntil自动关闭可观察到的订阅,它将自动处理订阅(始终清除订阅!)

注意:更改一个值,等待4秒,然后单击submit不会触发订阅。我想这是故意的行为。

票数 1
EN

Stack Overflow用户

发布于 2019-01-16 21:52:58

当表单提交时,您可以简单地从可观察到的unsubscribe中提取。

看看这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class AppComponent implements OnInit  {
  form: FormGroup;

  subscription;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    this.form = this.fb.group({
      'name': [],
      'age': []
    });

    this.subscription = this.form.valueChanges.pipe(
      debounceTime(3000)
    ).subscribe(value => console.log(value));
  }

  onSubmit() {
    this.subscription.unsubscribe();
    console.log(this.form.value);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54229509

复制
相关文章
Rails里应用Devise
Use Devise For Authentication Devise is great gem for authentication, check out here. Add Gem First thing you need to do is to add devise gem to you Gemfile. Just add gem 'devise', '~> 3.5' to your Gemfile and run bundle install and restart your server. Se
用户2183996
2018/06/28
3500
Rails MVC 和 CRUD(3)
要在 Rails 中显示“My first test” 的静态页面,需要新建一个控制器和视图
franket
2021/11/24
7150
Ruby on Rails 基础(3)
查看可用ruby版本 [root@h202 ruby]# rvm list known -bash: rvm: command not found [root@h202 ruby]# su - root [root@h202 ~]# cd ruby/ [root@h202 ruby]# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p
franket
2021/11/25
1.2K0
Rails 3 Script/ 改版
相信如果之前用过 2.* rails 的人都知道. 我们习惯用 ./script/generate [xxxx] 或者 ./script/* [xxxx].
py3study
2020/01/10
7.1K0
rails3的render(:updat
rails2的时代,对于动态显示数据的查询使用ajax的方法,一般转向到.js文件。使用如下的代码:
py3study
2020/01/13
3620
Rails 容器与配置(3)
通过 docker inspect afdddae9b2bf 可以获得丰富的,容器镜像的细节
franket
2021/10/20
3370
Rails 构建评论功能(3)
评论在创表的过程中已经构建了与article 的关联,但是article并没与评论关联
franket
2021/10/20
8280
Rails MVC 和 CRUD(5)
创建了一个叫 ArticlesController 的类,继承自 ApplicationController
franket
2021/11/24
3390
Rails MVC 和 CRUD(7)
(这里的 /articles 明明对应两个方法,GET、POST ,有点不太明白,为什么这样指定就一定成了POST请求)
franket
2021/11/24
1960
Rails MVC 和 CRUD(9)
保存数据 修改 create 方法,对提交的数据进行保存 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new end def create # render plain: params
franket
2021/11/25
1900
Rails MVC 和 CRUD(15)
点击 【Destroy】 后会根据我们的定义弹出提示 连续删除几次后所剩无几 目前已经通过 Rails 实现了文章的 新建、显示、列出、更新、删除 操作 ---- 命令汇总 rails server -b 0.0.0.0 rails generate controller welcome index cat app/views/welcome/index.html.erb vim config/routes.rb grep -v " #" config/routes.rb | grep -v
franket
2021/11/25
3490
Rails MVC 和 CRUD(2)
MVC 分块设计有助于管理复杂的应用程序,因为可以在一段时间内只用关注一个方面;例如,可以在不依赖业务逻辑的情况下专注于视图设计;同时也让应用程序的测试更加容易;MVC 分层同时也简化了分组开发;不同的开发人员可同时开发视图、控制器逻辑和业务逻辑
franket
2021/11/24
3750
Rails MVC 和 CRUD(13)
定义 update 方法,并且添加 edit 链接和 show 链接 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new @article = Article.new end def
franket
2021/11/25
1620
Rails MVC 和 CRUD(12)
保存成功就直接显示,如果保存失败,就重绘 new 页面,new 页面中加入了对错误信息的显示
franket
2021/11/25
2550
Rails MVC 和 CRUD(8)
再次提交一回 ---- 创建模型 Rails 提供了一个生成器用来创建模型 [root@h202 blog]# bin/rails generate model Article title:string text:text Running via Spring preloader in process 13216 invoke active_record create db/migrate/20160422140912_create_articles.rb c
franket
2021/11/25
2570
Rails MVC 和 CRUD(1)
Rails 的相关基础,详细可以参考 官方文档 和 Ruby China 的 Rails 入门
franket
2021/11/24
3480
Rails MVC 和 CRUD(10)
再次加载 可以成功显示了 ---- 列出所有文章 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new end def create # render plain: params[:ar
franket
2021/11/25
1820
Rails MVC 和 CRUD(6)
不过,通过查看源码,我们可以看到 action 部分指向的是当前页面 action="/articles/new" , 而这个页面 (Restfull API) 应该是用来进行显示的,而不是进行处理的
franket
2021/11/24
2700
Rails MVC 和 CRUD(11)
列表页面多出来两个链接,点击 【New article】 成功跳转到了添加页面,随便输入点什么,提交 自动跳转到了显示页面,点击【Back】 跳转回了所有列表页面 Tip: 之所以每做一次修改都能直接生效,是因为在开发模式下(默认),每次请求 Rails 都会自动重新加载程序,因此修改之后无需重启服务器 ---- 数据验证 我们常常有对输入进行校验的需求,以避免接受到了无效或不合规范的数据 [root@h202 blog]# vim app/models/article.rb [root@h
franket
2021/11/25
2720
Rails MVC 和 CRUD(14)
删除文章 在 controllers 中定义 destory 方法 然后在 index 视图中加入 Destroy 链接 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new @article
franket
2021/11/25
2160

相似问题

mongomapper rails 3和devise

20

Rails3和论坛插件?

21

Devise with rails 3和remote => true

20

Rails 3 devise_for和STI

21

Rails 3和Devise的角色授权

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文