我正在尝试在我的 Angular 应用程序中设置一个数据服务,该应用程序使用的是 BreadJS。在我兑现承诺后,我无法将 .then 归档到我的控制器中。我正在通过数据服务中的微风从数据库中取回数据。我可以回传微风承诺,但我希望能够使用 $q.all 知道何时找到了我的所有数据。
在我的控制器中`
ProApp.controller('caseInfoController', function caseInfoController($scope, $log, $timeout, caseDataService) {
/***initialize data ***/
// initializeApp();
ATPinitializeApp();
function ATPinitializeApp() {
$scope.MyStateList= caseDataService.getAllStates()
.then(function assignStates(data) {
$log.info("THIS THEN WILL NOT FIRE");
});
}
`
当数据服务的承诺得到履行时,上述内容将不会触发。
ProApp.factory('caseDataService', function ($log, $q)
{
breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
var servicename = "http://localhost:60882/breeze/SPLBreeze";
var manager = new breeze.EntityManager(servicename);
var caseDataService =
{
getAllStates: getAllStates,
};
return caseDataService;
/*** implementation details ***/
function getAllStates()
{
var myStatePromise = $q.defer();
var query = breeze.EntityQuery
.from("state");
manager.executeQuery(query)
.then(function (data) {
$timeout(function () { myStatePromise.resolve(data); }, 200);;
});
return myStatePromise.promise;
};
任何帮助将不胜感激。我不是 100% 确定我是否正确设置了 $q 承诺。最终,我想使用 $q.all 来确定何时解决了一系列不同的承诺,以便我可以更新给用户的消息。我一直在阅读我需要使用超时来获得角度来意识到在下一个事件循环中发生了变化。