我在javascript / knockout中有一个fileupload实用程序。在我的viewmodel中,我在模型.upload()
上调用一个异步xhr类型请求的函数。我想知道viewModel是什么时候所有xhr请求都完成了:
this.upload = function () {
var self = this;
for (var i = 0; i < self.files().length; i++) {
self.files()[i].upload();
}
this.uploadComplete(true);
};
this.uploadComplete(true);
当然不起作用,因为调用是异步的。从模型回传到上传完成的视图模型的正确方法是什么(注意可以有多个文件)。
答案 0 :(得分:2)
文件'upload
方法应返回Promise(或类似名称)。您可以在数组中收集它们,然后
Promise.all(arrayOfPromises).then(function () {
self.uploadComplete(true);
});