将回调函数转换为RxJS



我想将一段代码从NodeJS回调转换为RxJS,但我不确定我的方法是否正确。我总是犯错误。

原始代码:

function signup(poolData, body) {
const { username, password, attributes } = body;
userPool.signUp(username, password, attributes, null, (err, res) => {
if (err) return cb(err);
const cognitoUser = res.user;
const data = {
username: cognitoUser.getUsername(),
};
cb(null, data);
});
}

转换为RxJS:

function signup(poolData, body) {
const { username, password, attributes } = body;
return Observable.create( observer =>{
let output = (err, res)=>{
if(err) throw err;
const cognitoUser = res.user;
const data = {
username: cognitoUser.getUsername(),
};
observer.next(data);
}
userPool.signUp(username, password, attributesList, null, output);
});
}

我把我的注册名称为RxJS,如下所示:

let observable = signup(poolData, params);
observable
.catch(err => print(`Error caught: ${err}`))
.subscribe(val => print(val));

你能告诉我我是否正确转换了代码吗?当我收到"TypeError:observable.catch不是函数"的错误时。

let observable = signup(poolData, params);
observable.subscribe(val => print(val), err => print(`Error caught: ${err}`));

Subscribe方法要么采用一个部分观测器对象(Object with next, error, complete methods [ Observer interface ](,要么采用三个可选参数作为回调,依次是next、error和complete函数。

next:每个传递值的处理程序error:错误通知的处理程序complete:完成可观察执行的处理程序

最新更新