我想将一段代码从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
:完成可观察执行的处理程序