gpt4 book ai didi

javascript - inventoryData 返回未定义,因为 $http.get 是异步的,如何重构代码?

转载 作者:行者123 更新时间:2023-12-01 03:58:54 24 4
gpt4 key购买 nike

我正在进行以下 http get 调用来获取 html 页面源代码,然后对其进行解析。

由于某种原因,它一直返回 undefined。

如何修复它?

Update: It seems that $http.get() is asynchronous, so how would I go about returning a value from it?

function checkInventory() {
var newReqObj = DataService.getFormData();
var store = newReqObj.store;
var code = newReqObj.code;
var size = newReqObj.size;

if(store === 'nike') {
var inventoryData = checkNike(store, code, size);
$log.debug(inventoryData);
return inventoryData;
}
}

function checkNike(store, code, size) {
var inventoryData = {
'qtyAvailable': 0,
'maxOrder': 0,
'size': 0,
'name': '',
'price': '',
'url': '',
'code': code
};

var url = 'http://www.nike.co.uk/search?q=' + code;
checkNikeUrl(url, size, inventoryData);
}

function checkNikeUrl(url, size, inventoryData) {
$http.get(url).then(function(response) {
var html = response.data;

inventoryData.qtyAvailable = utility.getProductQty(html, size);
inventoryData.maxOrder = utility.getProductMaxOrder(html, size);
inventoryData.size = size;
inventoryData.name = utility.getProductName(html);
inventoryData.price = utility.getProductPrice(html);
inventoryData.url = url;

return inventoryData;
})
};

最佳答案

您必须在代码中添加 2 个返回值。

第一:

 $http.get(url).then(function(response) {

应该是

return $http.get(url).then(function(response) {

第二个

  checkNikeUrl(url, size, inventoryData);

应该是

return checkNikeUrl(url, size, inventoryData);

编辑

我认为

var inventoryData = checkNike(store, code, size);

应该只是

return checkNike(store, code, size);

关于javascript - inventoryData 返回未定义,因为 $http.get 是异步的,如何重构代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355403/

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