У меня есть функция 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.all, но мне нужно сначала разрешить результаты из базы данных, или просто проверить результаты из базы данных и если они содержат все необходимые типы, разрешите ее тогда? И если это не разрешено, просто продолжайте настаивать на обещании getResponse в $ interval, пока не вернутся желаемые результаты?
Является ли то, что я прошу даже по возможности?
Благодаря
Таким образом, в основном вы хотите опрашивать базу данных для значения определенного типа? Если это так, было бы логичнее создать функцию, которая принимает параметр типа и разрешает это конкретное значение. Таким образом, вы можете создать массив обещаний, ждать их всех, и когда все они будут решены, у вас есть свои ценности. –