所以我想为所有http请求添加一个firebase令牌。我正在使用angularJS 1.X框架。
我有一个拦截器功能,通常我会像这样添加它:
.factory('Interceptor', function () {
interceptorFactory.request = function (config) {
config.token = firebaseToken;
return config;
};
return interceptorFactory;
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('Interceptor');
});
但问题是获取firebase令牌的唯一方法是通过promise,所以为此我需要做类似的事情:
.factory('Interceptor', function () {
interceptorFactory.request = function (config) {
getFirebaseToken().then(function(token){
config.token = token;
return config;
});
};
return interceptorFactory;
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('Interceptor');
});
问题是因为异步检索令牌,工厂拦截器不等待promise解析,因此请求在没有令牌的情况下发送。如果有人知道如何解决这个问题将会有所帮助。
另外,我知道我可以在我发出每个http请求之前获取令牌,但之后会导致很多重复的代码,而且我无法在应用程序启动时获取令牌而只是存储它因为它有一个到期