根据结果重复角度的诺言



i具有一个angularJS函数,可以从数据库中获取一些数据。根据数据填充到数据库的方式,我不会立即获得一些我要寻找的数据(我确实在原始调用的一两个或两个之内将数据恢复了)。我想做的是检查数据库中返回的结果,如果某些类型还没有,则"推动另一个承诺",以再次从数据库中获取数据。这是我到目前为止的功能:

         function getResponses(ids,user) {
            var deferred = $q.defer();
            var promises = [];
            var idsString = "";
            angular.forEach(ids, function (id) {
                idsString += "," + id;
            });
            idsString = idsString.substring(1);
            //Get Response calls retrieves the data from the database
            promises.push(getResponse(idsString, user));
            $q.all(promises).then(function(results) {
                deferred.resolve(results);
            });
            return deferred.promise;
        }

到目前为止,我最大的问题是我将"检查结果"部分放在哪里?我认为它会进入$q。所有块,但是我需要先从数据库中解析结果,或者我只需检查数据库的结果,如果它们包含所有必要的类型,请解决它然后?如果没有解决,只需继续以$ $间隔推动GetResponse Promise,直到所需的结果返回?

我甚至要求什么?

谢谢

无需用$q.defer制造承诺,因为$q.all已经返回承诺:

 function getResponses(ids,user) {
    //var deferred = $q.defer();
    var promises = [];
    var idsString = "";
    angular.forEach(ids, function (id) {
        idsString += "," + id;
    });
    idsString = idsString.substring(1);
    //Get Response calls retrieves the data from the database
    promises.push(getResponse(idsString, user));
    /* NOT needed
    $q.all(promises).then(function(results) {
        deferred.resolve(results);
    });
    return deferred.promise;
    */
    //INSTEAD return promise from $q.all
    return $q.all(promises);
}

最新更新