typescript – 连接rxjs Observables
发布时间:2020-12-17 17:21:46 所属栏目:安全 来源:网络整理
导读:是否可以连接多个observable? 例如: 我有3个功能: ensureUserLogged():ObservablebooleancreateEntity():ObservableEntitycheckEntity():Observableboolean 我想做的事情如下: Observable.combine (ensureUserLogged(),createEntity(),checkEntity()).su
是否可以连接多个observable?
例如: ensureUserLogged():Observable<boolean> createEntity():Observable<Entity> checkEntity():Observable<boolean> 我想做的事情如下: Observable.combine (ensureUserLogged(),createEntity(),checkEntity()).subscribe ( checkEntityResult => console.log (checkEntityResult),error => console.log (error) ); 或类似的东西: ensureUserLogged().then (logged => createEntity()).then (newEntity => checkEntity ())... 否则我需要写一个丑陋的金字塔: ensureUserLogged().subscribe ( res => { createEntity ().subscribe ( res => { checkEntity ().subscribe ( res => { console.log ("I'm finally here") },error {} ) },err => { } ); },err => { } ) 有什么东西可以达到我的意愿吗? 谢谢 解决方法
您需要使用Observable.forkJoin进行并行执行:
Observable.forkJoin(ensureUserLogged(),checkEntity()).subscribe ( checkEntityResult => console.log (checkEntityResult),error => console.log (error) ); checkEntityResult将对应于包含每个元素的数组:第一个用于ensureUserLogged的结果,… 要按顺序执行事物,您需要使用flatMap运算符: ensureUserLogged().flatMap((resultOfEnsureUserLogged) => { return createEntity(); }).flatMap((resultOfCreateEntity) => { return checkEntity(); }).subscribe((resultOfChekEntity) => { (...) }); 你可以注意到你可以混合东西.例如,类似的东西: ensureUserLogged().flatMap((resultOfEnsureUserLogged) => { return Observable.forJoin(createEntity(),checkEntity()); }).subscribe((resultOfCreateEntityAndChekEntity) => { (...) }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |