gpt4 book ai didi

javascript - Angular 返回 promise

转载 作者:行者123 更新时间:2023-12-03 09:21:58 25 4
gpt4 key购买 nike

我对 promise 有疑问。这是详细信息页面的 Controller 。我想从网络服务获取商品详细信息(如果已存储,则从本地商店获取商品详细信息)。

app.controller('ProductCtrl', function($scope, productsService) {
//load the product by id from productService
productsService.get("CODE-1111").then(function(result){
$scope.currProduct = result;
$scope.currProductSizes = $scope.currProduct.sizes;
});
}

app.service('productsService', function($http, localStorageService){
var _key = 'myProducts'
var _storedData = []
var self = this;
self.get = function(id){
var i = 0;
return self.getAll().then(function(result) {
//get the item by id
_storedData = result;
for(i=0;i<_storedData.length;i++){
if(_storedData[i].id == id)
break;
}
return _storedData[i];
});
}
self.getAll = function() {
_storedData = localStorageService.get(_key);
if(_storedData != null){
**//How return a promise here? Or how I can handle it**
return _storedData instanceof Array ? _storedData : [_storedData];
}
else{
var url = baseUrl + "api/GetStyles";
return $http({method: 'GET', url: url, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }})
.then(function(response) {
_storedData = mapToProducts(JSON.parse(response.data));
return _storedData;
},
function(response) {
console.log(response.status);
});
}
};

})

第一次(元素不在本地商店中)一切正常,因为 getAll 方法返回一个 promise ,但第二次它不返回 promise ,所以我得到

Cannot read property 'then' of undefined

我该如何解决这个问题?

最佳答案

你可以像这样返回一个 promise :

return $q.when(_storedData instanceof Array ? _storedData : [_storedData]);

关于javascript - Angular 返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com