Javascript 模型完成通知ViewModel?

Javascript 模型完成通知ViewModel?,javascript,knockout.js,Javascript,Knockout.js,我有一个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].

我有一个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.upload=函数(){
var self=这个;
对于(var i=0;i

this.uploadComplete(true)当然不起作用,因为调用是异步的。从模型到viewmodel的正确通信方式是什么?上传完成(注意,可能有多个文件)

files'
upload
方法应该返回一个(或类似的东西)。您可以将它们收集到一个数组中,然后

Promise.all(arrayOfPromises).then(function () {
    self.uploadComplete(true);
});

文件的上传方法应该返回一个(或类似的东西)。您可以将它们收集到一个数组中,然后

Promise.all(arrayOfPromises).then(function () {
    self.uploadComplete(true);
});

谢谢你,罗伊。从未有过使用承诺的机会(尽管我多次听到这个词)。工作得很有魅力。因为我们已经依赖jquery,所以我决定使用jquery承诺。谢谢Roy。从未有过使用承诺的机会(尽管我多次听到这个词)。工作得很有魅力。因为我们已经依赖jquery,所以我决定使用jquery承诺。