【发布时间】:2015-10-09 14:56:06
【问题描述】:
我了解在简单场景中使用 Promise,但目前对于如何在使用 for 循环和对本地 sqlite 数据库进行一些更新时实现某些东西感到非常困惑。
代码如下
surveyDataLayer.getSurveysToUpload().then(function(surveys) {
var q = $q.defer();
for (var item in surveys) {
var survey = surveys[item];
// created as a closure so i can pass in the current item due to async process
(function(survey) {
ajaxserviceAPI.postSurvey(survey).then(function(response) {
//from response update local database
surveyDataLayer.setLocalSurveyServerId(survey, response.result).then(function() {
q.resolve; // resolve promise - tried only doing this when last record also
})
});
})(survey) //pass in current survey used to pass in item into closure
}
return q.promise;
}).then(function() {
alert('Done'); // This never gets run
});
任何帮助或帮助将不胜感激。我可能正在为如何最好地在循环中执行异步调用而苦苦挣扎,该循环执行另一个异步调用来更新,然后在完成后继续。
至少承诺让我摆脱了回调地狱。
干杯
【问题讨论】:
-
您正在寻找的是
$q.all并传入一组您可以通过for循环创建的promise。
标签: javascript angularjs asynchronous promise