Sam*_*mmy 6 javascript asynccallback promise typescript auth0
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)
}
});
}Run Code Online (Sandbox Code Playgroud)
如上所示,parseHash将回调函数作为参数,我无法控制它。我想loadSession返回一个在上面Promise解决// TODO (1)和拒绝的问题// TODO (2)。这样我可以做到obj.loadSession().then(() => { // do something if successful }).catch((err) => { // raise error if not })
只需将其封装在一个承诺中:
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);
}
});
});
}
Run Code Online (Sandbox Code Playgroud)