Доступ к заводским данным angularjs вне обещания [копия]

0

У меня есть фабрика с именем readingService фабричный метод GetLastSyncTimestamp возвращает DateTime из веб-службы, после вызова фабрики я назначил return DateTime переменной $scope.lastSyncTimestamp, но проблема в том, что я могу получить DateTime правильно

 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);

есть ли способ получить данные за пределами обещания?

  • 0
    Обязательно используйте службу, но проблема связана с асинхронным вызовом обещания. При попытке печати значение на самом деле не установлено
  • 0
    да проблема в асинхронном вызове, но нужен способ вывести его наружу
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

Создание сервиса

  .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

0

В этом примере:

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

console.log($scope.lastSyncTimestamp);

Обещание не возвращается до console.log($scope.lastSyncTimestap); строка выполнена. Вы можете обрабатывать данные в рамках обещания или инкапсулировать функциональность, которую вы хотите использовать с данными в функции, и вызывать эту функцию из обещания.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню