RxJS去嵌套callback
我想做一些事情:
Rx.Observable.of(userToken) .flatMap(verifyToken) .flatMap(getUserInformation) .flatMap(createUser) .flatMap(signNewToken) .subcribe({ next: result => useResult(result), error: error => handleError(error) })
我试图避免的是一个callback混乱。 在我的代码中,像verifyToken
这样的verifyToken
是Observables,我想链接它们。 这种模式是否正确? 因为现在只要其中一个内部做observer.error(new Error('problem'))
,链崩溃,我的error handling程序不会被调用。 我怎样才能改善这个?
我认为错误确实会传播到您的订阅。 这应该模拟你的情况:
const Rx = require('rxjs/Rx'); const Observable = Rx.Observable; let userToken = Observable.of(42); let verifyToken = Observable.range(1,3); let getUserInformation = Observable.of('whatever'); let createUser = Observable.create(observer => { observer.error(new Error('problem')); }); Observable.of(userToken) .flatMap(val => verifyToken) .flatMap(val => getUserInformation) .flatMap(val => createUser) .subscribe({ next: result => console.log("Next:", result), error: error => console.log("Error subscriber:", error.message) });
控制台中的输出如预期的那样:
Error subscriber: problem