如何确定差异执行何时结束,以便我可以在 AngularJs 中加载数据?
How can I determine when the differed execution will end so that I can load the data in AngularJs?
我正在使用本地化 cookie 跟踪当前文化。我想在应用程序启动时加载当前所选文化的所有消息,并将它们与有关其文化的信息一起保存在 localStorage
中,然后仅在所选文化发生变化时刷新它们(当 [=13= 的值] 在 localStorage
中与 cookie 中的不同)。
在我的控制器中,我设置了
$scope.messages = localisationService.messages(localisationMessagesUrl, currentCulture);
在localisationService
,我有
app.service("localisationService", function ($q, $http, localStorageService) {
var getCachedMessagesForLanguage = function (localisationMessagesUrl, language) {
console.log('getCachedMessagesForLanguage');
var messages = localStorageService.get('Localisation');
if (!messages || language !== localStorageService.get('Language')) {
getLocalisationsFromServer(localisationMessagesUrl).then(function (serverMessages) {
localStorageService.add('Localisation', messages);
localStorageService.add('Language', language);
});
}
return localStorageService.get('Localisation')
}
function getLocalisationsFromServer(localisationMessagesUrl) {
return $q(function (resolve) {
$http.get(localisationMessagesUrl)
.then(function (response) {
resolve(response.data);
});
});
}
return {
messages: function (localisationMessagesUrl, language) {
return getCachedMessagesForLanguage(localisationMessagesUrl, language);
}
};
});
getCachedMessagesForLanguage
returns undefined
在 getLocalisationsFromServer
完成之前,所以在第一次加载时我没有消息。如果我刷新页面,那么我就会正确地获取它们。我该如何解决这个问题?
制作getCachedMessagesForLanguage
return一个deferred.promise
然后你可以做..
getCachedMessagesForLanguage(localisationMessagesUrl,
language).then(function(Localisation) {
return getLocalisationsFromServer(localisationMessagesUrl)
}).then(function(responseFromGetLocalisationsFromServer) {
// do your thing here
})
我正在使用本地化 cookie 跟踪当前文化。我想在应用程序启动时加载当前所选文化的所有消息,并将它们与有关其文化的信息一起保存在 localStorage
中,然后仅在所选文化发生变化时刷新它们(当 [=13= 的值] 在 localStorage
中与 cookie 中的不同)。
在我的控制器中,我设置了
$scope.messages = localisationService.messages(localisationMessagesUrl, currentCulture);
在localisationService
,我有
app.service("localisationService", function ($q, $http, localStorageService) {
var getCachedMessagesForLanguage = function (localisationMessagesUrl, language) {
console.log('getCachedMessagesForLanguage');
var messages = localStorageService.get('Localisation');
if (!messages || language !== localStorageService.get('Language')) {
getLocalisationsFromServer(localisationMessagesUrl).then(function (serverMessages) {
localStorageService.add('Localisation', messages);
localStorageService.add('Language', language);
});
}
return localStorageService.get('Localisation')
}
function getLocalisationsFromServer(localisationMessagesUrl) {
return $q(function (resolve) {
$http.get(localisationMessagesUrl)
.then(function (response) {
resolve(response.data);
});
});
}
return {
messages: function (localisationMessagesUrl, language) {
return getCachedMessagesForLanguage(localisationMessagesUrl, language);
}
};
});
getCachedMessagesForLanguage
returns undefined
在 getLocalisationsFromServer
完成之前,所以在第一次加载时我没有消息。如果我刷新页面,那么我就会正确地获取它们。我该如何解决这个问题?
制作getCachedMessagesForLanguage
return一个deferred.promise
然后你可以做..
getCachedMessagesForLanguage(localisationMessagesUrl,
language).then(function(Localisation) {
return getLocalisationsFromServer(localisationMessagesUrl)
}).then(function(responseFromGetLocalisationsFromServer) {
// do your thing here
})