Javascript 在一个承诺里面
我试图创建一个返回承诺的函数,在该函数中,我有一个angular.forEach返回承诺。 下面是一个示例代码:Javascript 在一个承诺里面,javascript,angularjs,Javascript,Angularjs,我试图创建一个返回承诺的函数,在该函数中,我有一个angular.forEach返回承诺。 下面是一个示例代码: function func1() { func2(demoText, demoObject).then(function(response) { console.log(response); }); } function func2(demoText, demoObject) { var deferred = $q.defer();
function func1() {
func2(demoText, demoObject).then(function(response) {
console.log(response);
});
}
function func2(demoText, demoObject) {
var deferred = $q.defer();
var returnString = "someReturnString";
var keepGoing = true;
var loopPromises = [];
angular.forEach(demoObject, function(value, key) {
if(keepGoing) {
var deferred2 = $q.defer();
loopPromises.push(deferred2.promise);
if(value.type == 'other') {
someService.getDataFromServer()
.then(function(serverResponse) {
returnString = serverResponse;
deferred2.resolve();
});
keepGoing = false;
}
else {
deferred2.resolve();
}
}
});
return $q.all(loopPromises).then(function () {
deferred.resolve(returnString);
return deferred.promise;
});
}
现在返回的值是“someReturnString”,这意味着在我从服务器获取结果之前会重新调整该值
如何解决这个问题?您使用的是什么版本的angularjs?angularjs版本1.6.9