ng-file-upload sequential promises

时间:2016-07-12 23:02:04

标签: angularjs ng-file-upload

使用此指令:ng-file-upload

如何逐个按顺序(按顺序,排队)上传多个文件?我正在考虑链式承诺,但我不知道如何将承诺和指令结合起来。

This is an example上传多个文件,但所有文件都在同一时间而不是按顺序上传。

这是我的代码:

for (var i = 0; i < files.length; i++) {
    Upload.upload({
        url: config.base+'/upload/',
        data: {
            file: files[i],
        }
    }).then(function (response) {
        vm.reloadImatges();
        vm.upload.progress=0;
        vm.upload.files--;
    }, function (resp) {

    }, function (evt) {
        vm.upload.progress = parseInt(100.0 * evt.loaded / evt.total);
    });                        
}

1 个答案:

答案 0 :(得分:2)

我找到了一个解决方案,也许不是最好的,但它确实有效 http://jsfiddle.net/erLax2fm/2/

以下代码:

var doSomething = function (index) {

    var defer = $q.defer();

    Upload.upload({
        url: url: config.base+'/upload/',
        data: {
            file: objects[index]
        }
    }).then(function (response) {
        objects[index].processed = true;
        if (objects[++index]) {
            defer.resolve(index);
        } else {
            defer.reject();
        }
    }, function (response) {


    }, function (evt) {
       vm.upload.progress = parseInt(100.0 * evt.loaded / evt.total);
    });

    defer.promise.then(doSomething);
};

doSomething(0);