auth0.js
具有用于解析URL哈希片段并从中提取身份验证结果的功能。我将此函数包装在一个称为loadSession
的代码中,如下所示:
public loadSession(): void {
this.auth0.parseHash((err, authResult) => {
if (authResult) {
window.location.hash = '';
localStorage.setItem('token', authResult.accessToken);
// TODO (1)
} else if (err) {
// TODO (2)
}
});
}
如上所示,
parseHash
将回调函数作为参数,但我无法控制它。我希望loadSession
返回一个Promise
,该代码将在// TODO (1)
处解析,并在上述// TODO (2)
处拒绝。这样我可以做obj.loadSession().then(() => { // do something if successful }).catch((err) => { // raise error if not })
最佳答案
只需将其包装在promise中即可:
public loadSession() {
return new Promise((resolve, reject) => {
this.auth0.parseHash((err, authResult) => {
if(authResult) {
window.location.hash = '';
localStorage.setItem('token', authResult.accessToken);
resolve(authResult);
} else if (err) {
reject(err);
}
});
});
}