0

私はウェブ開発が初めてです。次の問題に直面しました。

Amazon s3 に画像をアップロードし、この画像へのリンクを含む応答でコールバックを取得します。次に、それを配列にプッシュし、この配列を DB に格納します。しかし、すべての画像がアップロードされたときに次の関数に移動する方法がわかりません。

このチャンクでは、配列内のダウンロードされた画像のカウント配列番号の長さが、応答で受信したリンクの数と等しい場合、ウォーターフォールの次の関数に進みます。しかし、何らかの理由で機能し、奇数のダウンロードされた画像のみです。

私がすべてを取得した後にのみ、滝の次の機能に進むことができるようにするにはどうすればよいですか

$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);
                }
            }
        },
4

1 に答える 1

0

私は非同期ウォーターフォールを使用したことはありませんが、これを行う必要がある場合は、promise を使用$qし、resolveイベントが受信されたときに目的の関数を呼び出すことができます。

ここから始めてください。

また、ルックアップ$q.all()- それがあなたを助けるものです。
成功イベントの$q.all()例を次に示します (すべての http 要求が完了したとき): Is there a second success in angular $q.all() as in jQuery $.get()

于 2015-06-08T12:01:20.680 に答える