访问 angularjs 工厂数据之外的承诺

Accessing angularjs factory data outside promise

本文关键字:承诺 数据 angularjs 工厂 访问      更新时间:2023-09-26

我有一个readingService工厂方法命名的工厂GetLastSyncTimestamp从 Web 服务返回 DateTime,调用工厂后,我在变量$scope.lastSyncTimestamp分配了返回日期时间,但问题出在承诺中,我可以正确获取日期时间

 readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
            $scope.lastSyncTimestamp = d.data;
            console.log($scope.lastSyncTimestamp);
        });

但在承诺之外,我没有得到任何数据

 readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
            $scope.lastSyncTimestamp = d.data;
        });
console.log($scope.lastSyncTimestamp);

有没有办法在承诺之外获取数据?

创建服务

  .service('DataService', function () {
            var service = {};
            service.defaultvalue= "1";
            return service;
        })

并将其注入控制器中。然后你可以在承诺中使用它,例如:

dataservice.lastSyncTimestamp = d.data;

而且外面也会工作。

例:https://github.com/leader80/angularjs-dataservice/blob/master/js/dataService.js

在此示例中:

readingService.GetLastSyncTimestamp($scope.id).then(function(d) {
    $scope.lastSyncTimestamp = d.data;
});
console.log($scope.lastSyncTimestamp);

在执行console.log($scope.lastSyncTimestap);行之前,承诺不会返回。您可以在 promise 中处理数据,也可以将您希望对数据执行的功能封装在一个函数中,然后从 promise 中调用该函数。