我有一个服务功能,用来上传文件到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. )但就在 全部 的文件被上传。
this.myService.uploadImgToFirebase(this.files);
// THINGS I NEED TO DO WHEN ALL THE FILES WERE UPLOADED
我怎么才能实现呢?
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
另一个简单的与asyncawait。
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();