У меня есть проблема с обещанием,Promise в Еогеасп с angularjs
$scope.refreshProject = function() {
project.getAll().then(function(results) {
angular.forEach(results, function(project) {
project_path = project.path;
project_file = project.file;
project_id = project.id;
console.log(project);
console.log('http://' + project_path + '/' + project_file);
$http.get('http://' + project_path + '/' + project_file)
.then(function(res){
var project = new Project();
project.update(project_id, { 'content': res.data });
});
});
$scope.refresh();
});
};
Мой $ http.get не работает,
console.log ('HTTP: //' + project_path + '/' + project_file);
возвращение
'http:///'
мои переменные пустеет.
project.model.js
Project.prototype.getAll = function() {
return ProjectService.getAll();
};
project.service.js
this.getAll = function (params) {
var projects = [];
return db.selectAll('projects').then(function(results) {
for(var i=0; i < results.rows.length; i++){
projects.push(results.rows.item(i));
}
return projects;
});
};
Как я могу выполнить мою просьбу $ HTTP, когда у меня есть параметры из project.path и project.file в порядке?
решаемых
project.getAll().then(function(results) {
angular.forEach(results, function(project) {
(function(project) {
var project_id = project.id;
if (project.path) {
var promise = $http.get(project.path + '/' + project.file)
.then(function(res){
var project = new Project();
console.log(res.data);
project.update(project_id, { 'content': res.data });
});
}
promises.push(promise);
})(project);
});
$q.all(promises).then(function() {
$scope.refresh();
console.log('refresh() ok');
});
});
использовать '$ q.all' или' Promise.all' –
Вы проверили 'console.log (результаты)'? Правильно ли это? – dfsq
Непростая идея отправить запрос внутри цикла. Ваша производительность будет очень низкой, иногда ваше приложение может сбой, поэтому вам нужно отправить результат (как массив) в 1 HTTP-запрос –