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

Make a Q promise function call blocking in AngularJS

在 angular 服务中,我们公开了一个函数,该函数提供令牌并且应该被阻止,直到令牌被加载。

服务中的关键部分

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

如何将其转换为阻塞函数代码?

所以 service.getToken(); 是 blocking/synchronious 直到令牌在那里。

返回 promise/callback 不是解决方案。

在 JavaScript 中,没有 阻塞函数,除非它们是同步的。

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

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

关于OP的最后更新...

Returning a promise/callback is not a solution.

这不是你能决定的。 JavaScript 无法阻止浏览器的 UI 线程,因此,您现在想要的方法是绝对不可能的。