gpt4 book ai didi

javascript - 如何在 rxjs 中做链式序列

转载 作者:IT王子 更新时间:2023-10-29 03:12:21 25 4
gpt4 key购买 nike

我想做这样的事:

this._myService.doSomething().subscribe(result => {
doSomething()
});
.then( () => dosthelse() )
.then( () => dosanotherthing() )

所以我想像 promise 的那样链接 .then。我将如何在 Rxjs 中做到这一点?

this._myService.getLoginScreen().subscribe( result => {
window.location.href = MyService.LOGIN_URL;
/// I would like to wait for the site to load and alert something from the url, when I do it here it alerts the old one
});
.then (alert(anotherService.partOfTheUrl())


getLoginScreen() {
return this.http.get(myService.LOGIN_URL)
.flatMap(result => this.changeBrowserUrl())
.subscribe( result => //i want to do sth when the page is loaded//);
}

changeBrowserUrl(): Observable<any> {
return Observable.create( observer => {
window.location.href = myService.LOGIN_URL;
observer.next();
});
}

最佳答案

可观察对象的 then 等价于 flatMap。您可以在此处查看一些使用示例:

对于您的示例,您可以执行以下操作:

this._myService.doSomething()
.flatMap(function(x){return functionReturningObservableOrPromise(x)})
.flatMap(...ad infinitum)
.subscribe(...final processing)

注意您的函数返回的类型,对于使用 flatMap 的链式 observable,您将需要返回一个 promise 或一个 observable。

关于javascript - 如何在 rxjs 中做链式序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37748241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com