$ q. todo se está resolviendo antes de las devoluciones

los$q.all se resuelve antes de que alguna de sus funciones se haya resuelto.

Estoy cargando dos archivos en Azure Blob Storage usando $ .ajax (no pude hacer que $ http funcione):

 function doPhotos (result, i)
    {
        var d = $q.defer();
        var requestData = new Uint8Array($scope.files[i].postArray);
        $.ajax({
            url: result.photos[i].imageUri,
            type: "PUT",
            data: requestData,
            processData: false,
            beforeSend: function (xhr)
            {
                xhr.setRequestHeader('x-ms-blob-type', 'BlockBlob');
                xhr.setRequestHeader('x-ms-blob-content-type', $scope.files[i].type);
                xhr.setRequestHeader('x-ms-meta-uploadvia', 'CORS Demo');
                xhr.setRequestHeader('Content-Length', requestData.length);
            },
            success: function (data, status)
            {
                d.resolve(data);

            },
            error: function (xhr, desc, err)
            {
                console.log('error uploading photo ' + desc);
                d.resolve(err);


            }
        });
        return d.promise;

    }

Esta es la función que configura el$q.all y se llama en unng-click:

$scope.createVotation = function () {
        services.photoset.create($scope.model).then(function (result) {
            $scope.model.id = result.id;
            var doPhotosArray= [];
            for (var i in result.photos) {
                doPhotosArray[i] = doPhotos(result, i);    
            }

            $q.all(doPhotosArray).then(function (data)
            {
                // this is being called almost immediately before the photos upload
                $scope.safeApply(function ()
                {
                    $scope.submitting = false;
                    $location.path('/vote/update/' + $scope.model.id);

                });
            });

        });
    }
};

html:

<button ng-click='createVotation()'>Create</button>

losq.all->then Se está llamando incluso antes de la primeradoPhoto Se llama resolucion. No estoy seguro de si hay algún problema con el uso del ajax de jQuery pero entiendo que$q.all Debería esperar hasta que ambas promesas (en mi caso hay 2) se cumplan antes de entrar en suthen.

Como un toque adicional, las fotos.son subiéndose para que funcione, es la$q.all Eso no está esperando.

Respuestas a la pregunta(1)

Su respuesta a la pregunta