我想做类似的事情:
Rx.Observable.of(userToken)
.flatMap(verifyToken)
.flatMap(getUserInformation)
.flatMap(createUser)
.flatMap(signNewToken)
.subcribe({
next: result => useResult(result),
error: error => handleError(error)
})
我试图避免的是回调混乱。在我的代码中,像verifyToken
这样的函数是Observables,我想链接它们。这种模式是否正确?因为现在只要其中一个内部执行observer.error(new Error('problem'))
,链就会崩溃而我的错误处理程序不会被调用。我怎样才能改善这个?
答案 0 :(得分:1)
我认为错误会传播到您的订阅。这应该模拟你的情况:
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