Обещание и $ q в угловых - PullRequest
       1

Обещание и $ q в угловых

0 голосов
/ 30 апреля 2018

У меня есть следующий код. Я ищу модуль для обещания и $ q в Angular 5, но не нашел никакой полезной подробной информации. Код ниже в AngularJS и Javascript.

Я хочу перенести этот код в Angular 5 и TypeScript. Это фиктивный сервис для симуляции данных:

angular.module('reports.appActivity').factory('AppActiveMockServices', ['$q',
    function ($q) {    
      var appActivity;

      function loadappActivity(params) {
        var deferred = $q.defer(),
          cancel = function (reason) {
            deferred.resolve(reason);
          };
        injectappActivity(params);

        deferred.resolve(appActivity);
        return {
          promise: deferred.promise,
          cancel: cancel
        };
      }

      function injectappActivity(params) {
        var total = Math.floor((Math.random() * 100)),
          someUsage = total - Math.floor((Math.random() * 80)),
          tempValue,
          maxIndex = 0,
          deltaTime=0,
          daysSelected,
          timeBegin,
          timeEnd,
          d = new Date(),
          dayInmilliseconds;

        appActivity = {total: total, items: []};

        deltaTime = 24 * 3600 * 1000; // daily

        timeBegin = (params.timestamp_start).getTime();
        timeEnd =(params.timestamp_end).getTime();
        daysSelected =  Math.round((timeEnd - timeBegin) / 3600/24/1000);

        if (daysSelected <= 1 ) {
          maxIndex = 24 ; // one day , resolution is hourly data
          deltaTime = 3600 * 1000; // hourly
          dayInmilliseconds = (d.getTime() - (24 * 3600 * 1000));
        }
        else if (daysSelected <=  7)  {
          maxIndex = 7; // 7 days , resolution is daily data
          dayInmilliseconds = (d.getTime() - (7* 24 * 3600 * 1000));
        }
        else if (daysSelected <= 30) {
          maxIndex = 30; // 30 days , resolution is daily data
          dayInmilliseconds = (d.getTime() - (30* 24 * 3600 * 1000));
        }
        else { // custom range
          maxIndex = daysSelected; // x days , resolution is daily data
          dayInmilliseconds = (d.getTime() - (daysSelected * 24 * 3600 * 1000));
        }

        for (var index = 0; index < maxIndex; index++) {
          d.setTime(dayInmilliseconds + (index * deltaTime));
          total = Math.floor((Math.random() * 100));
          tempValue = Math.floor((Math.random() * 50));
          someUsage = (tempValue > total) ? total : (total - tempValue);

          var item = {
            'total': total,
            'some_usage': someUsage,
            'date': d.toISOString().slice(0, 19) + 'Z'
          };
          appActivity.items.push(item);
        }
      }

      return {
        loadappActivity: loadappActivity
      };
    }
  ]);

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 30 апреля 2018

ищет обещание и $ q в Angular 5, но не находит полезной подробной информации

В Angular, предполагая, что вы оставили polyfills.ts в покое, вы можете просто использовать Promise, как в моем примере ниже

Хотите ... перенести этот код в Angular 5 и Typescript.

Вот базовая настройка, чтобы начать работу, я не собираюсь копировать весь этот код, потому что я вижу несколько вещей, отсутствующих / странных в нем, которые могут иметь большее значение для исправления (как, например, у вас есть params) arg, который никогда не используется, а также функция injectappActivity, которая никогда не определяется)

рассмотрите возможность использования углового клика для создания сервиса

ng generate service app-active-mock

и затем обновить его так

# app-active-mock.service.ts

@Injectable()
export class AppActiveMockService {
  public loadappActivity(): Promise<any> {
    return Promise.resolve(...)
  }
}

Также немного не связано, но вы, вероятно, не найдете полезного поиска вещей, связанных с Promises в Angular, потому что по большей части сообщество охватило Observables

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...