在角度服务中,我们会重新暴露一个提供令牌并且应该阻塞的函数,直到加载该令牌。
服务中的关键部分
....
function getToken(){
tokenPromise().then(
function(token){ return token;},
function(error){ return null;}
}
....
如何将其转换为阻止功能代码?
以便service.getToken();
阻止/同步,直到有令牌为止。
返回承诺/回调不是解决方案。
答案 0 :(得分:2)
在JavaScript中,除非它们是同步的,否则没有阻止函数。
您可以做的是在getToken
中返回承诺并使用then
的承诺继续承诺:
getToken().then(function(token) {
// Do stuff when I get the token
});
返回承诺/回调不是解决方案。
这不能由您决定。 JavaScript无法阻止浏览器的UI线程,因此,您现在绝对不可能实现所需的方法。