Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对AWS cognito回调使用Observable_Javascript_Amazon Web Services_Angular_Rxjs_Amazon Cognito - Fatal编程技术网

Javascript 对AWS cognito回调使用Observable

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()); }); 有一

如何将注册回调转换为可观察的,符合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());
});

有一个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方法将承诺转换为可观察的。你救了我的命。