在AngularJS中进行Q promise函数调用阻塞

时间:2015-09-24 08:17:58

标签: javascript angularjs synchronization promise q

在角度服务中,我们会重新暴露一个提供令牌并且应该阻塞的函数,直到加载该令牌。

服务中的关键部分

....
    function getToken(){
        tokenPromise().then(
            function(token){ return token;},
            function(error){ return null;}
    }
....

如何将其转换为阻止功能代码?

以便service.getToken();阻止/同步,直到有令牌为止。

返回承诺/回调不是解决方案。

1 个答案:

答案 0 :(得分:2)

在JavaScript中,除非它们是同步的,否则没有阻止函数

您可以做的是在getToken中返回承诺并使用then的承诺继续承诺:

getToken().then(function(token) {
    // Do stuff when I get the token
});

关于OP的最后更新......

  

返回承诺/回调不是解决方案。

这不能由您决定。 JavaScript无法阻止浏览器的UI线程,因此,您现在绝对不可能实现所需的方法。