每次上传的异步js回调

async js callback for each upload

我是网络开发的新手。我遇到了以下问题:

我在 amazon s3 上上传图片并收到回调,其中包含对此图片的 link 响应。然后我将它推入数组并将该数组存储在数据库中。但是我不知道如何在所有图片上传后准确地转到下一个功能。

在这个块中,当数组中下载图像的计数数组的长度等于接收到的响应的 link 的数量时,我将转到瀑布中的下一个函数。但由于某种原因它有效,只有奇数个下载图像。

你怎么做才能在我全部搞定之后才能进入瀑布的下一个功能

$scope.createPromo = function () {
    async.waterfall([
        function(callback) {
            var promImageLoc = [];
            var upload = $scope.uploaderPromo.queue;
            $scope.uploaderPromo.uploadAll();
            $scope.uploaderPromo.onSuccessItem = function(fileItem, response, status, headers) {
                console.log('success response', response);
                    promImageLoc.push(response.location);
                    if (upload.length === promImageLoc.length) {
                    callback(null, promImageLoc);
                }
            }
        },

我从未使用过异步瀑布,但如果我必须这样做,我会使用 $q promises,当收到 resolve 事件时,你可以调用你想要的函数。

开始here.

此外,查找 $q.all() - 这将对您有所帮助。
这是一个带有成功事件的 $q.all() 示例(当所有 http 请求都完成时):