Получить функцию возврата xhr в сервисе ember ajax

У меня есть сервис ember, который предоставляет почту ajax

import Ember from 'ember';
import ENV from '../config/environment';

export default Ember.Service.extend({
  save(data) {
    return new Ember.RSVP.Promise(
      function (resolve, reject) {
        function progress(e){

          if(e.lengthComputable){
            let max = e.total;
            let current = e.loaded;
            let Percentage = (current * 100)/max;
            console.log(Percentage);
            if(Percentage >= 100)
            {
              // process completed
            }
          }
        }

        Ember.$.ajax({
          type: 'POST',
          enctype: 'multipart/form-data',
          url: ENV.APP.API_HOST + '/profile/lampiran-desas',
          processData: false,
          contentType: false,
          cache: false,
          data: data,
          xhr: function() {
            let myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){
              myXhr.upload.addEventListener('progress',progress, false);
            }
            return myXhr;
          },
          success: function (response) {
            resolve(response);
          },
          error: function (error) {
            reject(error);
          }
        });
      });
  }
});

ответ успеха обычно возвращается в моем компоненте. Но как вернуть прогресс моей функции. так что я могу сделать индикатор загрузки на моем шаблоне..?

Спасибо..

1 ответ

Насколько я вижу, вы делаете удаленный вызов в службе, и вы хотите отобразить прогресс в компоненте. Для этого вам необходимо сохранить соответствующие данные в самой службе; и отобразить прогресс в компоненте.

Вот пример, который я приготовил для вас, чтобы проиллюстрировать это дело. mock-remote-call-service это фиктивный сервис, который обновляет 10% каждые 200 мс Результат напрямую сохраняется в самой службе. progress-displayer-component несет ответственность за отображение хода выполнения, запуск задачи удаленного вызова и даже отображение возвращенных данных.

Это был просто пример, чтобы объяснить мою точку зрения. Надеюсь, это поможет.

Другие вопросы по тегам