请注意,我已经阅读了与我的问题有些相关的所有StackOverflow问题,但这些问题都没有真正回答我的问题。如果没有完全理解我的问题,请不要将其标记为重复。
这是我的担忧:
我想在不影响角度承诺的情况下延迟angularJS $ http.get调用。现在,下面的代码在这一行中引发了“angular-1.3.15.js:11655 TypeError:无法读取属性'然后'未定义”:
updatedPromise = promise.then(功能(价格)
这是我的部分代码:
MyAPP.service('FirstService', ['$q','$http', 'Constants', 'SecondService', 'UtilityService', function($q, $http, Constants, SecondService, UtilityService) {
var self = this;
var processFunction = function(AnArray) {
var updatedPromise;
var promises=[];
angular.forEach(AnArray, function(itemObj, index)
{
var totalWorth = "";
if(itemObj.name != "")
{
var promise = SecondService.getPrice(itemObj.name);
updatedPromise = promise.then(function(price){
itemObj.price = price;
return itemObj;
}, function(error){
console.log('[+] Retrieving price has an error: ', error);
});
promises.push(updatedPromise);
}
else
{
console.log("Error!");
}
});
return $q.all(promises);
};
);
MyAPP.service('SecondService', ['$timeout','$http', 'Constants', function($timeout, $http, Constants) {
var self = this;
var URL = "/getPrice";
self.getPrice = function(itemName){
$timeout(function(){
var promise;
promise = $http({
url: URL,
method: 'POST',
data: {_itemName : itemName},
headers: {'Content-Type': 'application/json'}
}).then(function(response) {
return response.data;
}, function(response) {
console.log("Response: " + response.data);
return response.data;
});
return promise;
}, 3500);
console.log("[-]getPrice");
};
}]);
请注意,processFunction应该真正返回一个promises数组,因为在其他函数中需要它。
非常感谢您的帮助!
让我知道进一步的问题/澄清。
谢谢!
答案 0 :(得分:2)
$http
会返回一个承诺,因此您可以返回该承诺,然后从self.getPrice = function (itemName) {
return $timeout(3500).then(function () {
return $http({
url: URL,
method: 'POST',
data: { _itemName: itemName },
headers: { 'Content-Type': 'application/json' }
});
}).then(function (response) {
return response.data;
}, function (response) {
console.log("Response: " + response.data);
return response.data;
});
};
返回承诺:
keyup