Javascript 对AWS cognito回调使用Observable
如何将注册回调转换为可观察的,符合Angular 2约定?这就是回调结构Javascript 对AWS cognito回调使用Observable,javascript,amazon-web-services,angular,rxjs,amazon-cognito,Javascript,Amazon Web Services,Angular,Rxjs,Amazon Cognito,如何将注册回调转换为可观察的,符合Angular 2约定?这就是回调结构 userPool.signUp(this.artist.email、this.artist.password、attributeList、null、函数(err、result){ 如果(错误){ 警惕(err); 返回; } 让cognitoUser=result.user; log(JSON.stringify(result)); log('用户名为'+cognitoUser.getUsername()); }); 有一
userPool.signUp(this.artist.email、this.artist.password、attributeList、null、函数(err、result){
如果(错误){
警惕(err);
返回;
}
让cognitoUser=result.user;
log(JSON.stringify(result));
log('用户名为'+cognitoUser.getUsername());
});
有一个RxJS静态操作符正是为了这个目的:。它将把一个节点样式的回调API转换为一个返回可观察值的函数
您可以这样使用它:
从'rxjs/Observable'导入{Observable};
导入“rxjs/add/observable/bindNodeCallback”;
让signInAsObservable=Observable.bindNodeCallback(
userPool.signUp.bind(userPool)
);
让可观察=符号可观察(
这个.artist.email,
这个.artist.password,
属性学家,
无效的
);
可观察的(
结果=>{
让cognitoUser=result.user;
log(JSON.stringify(result));
log('用户名为'+cognitoUser.getUsername());
},
错误=>警报(错误)
);
请注意,您需要调用
bind
将signUp
绑定到userPool
如果不定义类型,绑定将无法工作
要使其正常工作,请尝试以下操作:
register(user: RegistrationUser): Observable<any> {
let attributeList = [];
let dataEmail = {
Name: 'email',
Value: user.email
};
let dataNickname = {
Name: 'nickname',
Value: user.name
};
attributeList.push(new CognitoUserAttribute(dataEmail));
attributeList.push(new CognitoUserAttribute(dataNickname));
let signUp = Observable.bindNodeCallback<string, string, any[], any[], any>(this.userPool.signUp.bind(this.userPool));
return signUp(user.email, user.password, attributeList, null);
}
寄存器(用户:RegistrationUser):可观察{
让attributeList=[];
让dataEmail={
名称:'电子邮件',
值:user.email
};
让数据昵称={
姓名:“昵称”,
值:user.name
};
push(新的CognitoUserAttribute(dataEmail));
push(新的CognitoUserAttribute(Data昵称));
让signUp=Observable.bindNodeCallback(this.userPool.signUp.bind(this.userPool));
返回注册(user.email、user.password、attributeList、null);
}
不知何故,这种方法对我不起作用。我将回调转换为承诺,然后检查是否可以使用fromPromise方法将承诺转换为可观察的。你救了我的命。