Получить функцию возврата 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
несет ответственность за отображение хода выполнения, запуск задачи удаленного вызова и даже отображение возвращенных данных.
Это был просто пример, чтобы объяснить мою точку зрения. Надеюсь, это поможет.