Angular Запустить код после завершения обслуживания sh для загрузки файлов - PullRequest
0 голосов
/ 09 мая 2020

У меня есть служебная функция, которую я использую для загрузки файлов в хранилище Firebase. Он получает массив файлов и загружает каждый из них. Он также обновляет статус загрузки каждого файла и заполняет 'url' файла при его загрузке.

Итак, мой component.ts выглядит как


files: [{name: 'file1', uploaded: false, url:''}, {name: 'file2', uploaded: false, url:''} ];

...

constructor( private myService: FirebaseService) { }

...

this.myService.uploadImgToFirebase(this.files);


Дело в том, что мне нужно запустить какой-то код в моем компоненте (что-то вроде this.SOME_ITEM.files = this.files ), но только когда ALL файлы были загружены.


this.myService.uploadImgToFirebase(this.files);

// THINGS I NEED TO DO WHEN ALL THE FILES WERE UPLOADED


Как я могу этого добиться?

1 Ответ

0 голосов
/ 09 мая 2020

Assuming вы совершаете вызов http, который возвращает observable, на который вы можете подписаться.

this.myService.uploadImgToFirebase(this.files).subscribe(m => {
   //Do your operations here once its done.
});

Вы можете посмотреть async/await

async function turnYourFunctionAsync() {
  return 100;
}

turnYourFunctionAsync().then(alert); // 100

Другой простой пример с async / await:

async function turnYourFunctionAsync() {
    let promise = new Promise((res, err) => {
        setTimeout(() => res("The file upload operation is complete"), 1000)
    });

    let response = await promise; 

    alert(response); 
    }
};

turnYourFunctionAsync();
...