我正在使用AWS Cognito Javascript SDK进行身份验证来构建角度应用程序。
我有一个使用index = len(word)/2
方法的服务:
index = len(word)//2
现在,我想从login
返回一个可观察的方法,而不是直接在该服务上使用回调,我可以订阅该方法并获得身份验证的结果:成功,失败或需要新密码。 / p>
我查看了可观察的bindCallback和bindNodeCallback方法以及其他question的方法,但不知道该怎么做。
这怎么实现?
答案 0 :(得分:4)
您可以返回新的Observable并使用next()和error()触发观察者:
login(username: string, password: string): Observable<{ type: string, result: any }>{
const authData = {
Username: username,
Password: password
};
const authDetails = new AuthenticationDetails(authData);
const userData = {
Username: username,
Pool: userPool
};
this.cognitoUser = new CognitoUser(userData);
return new Observable<{ type: string, result: any}>(obs => {
this.cognitoUser.authenticateUser(authDetails, {
onSuccess: (result: any) => {
obs.next({ type: 'success', result: result });
obs.complete();
},
onFailure: (error: any) => obs.error(error),
newPasswordRequired: (userAttributes, requiredAttributes) => {
obs.next({ type: 'newPasswordRequired', result: [userAttributes, requiredAttributes] });
obs.complete();
}
});
});
}