我有以下方法異步返回值。在其餘值填充之前,return inventoryData
似乎會觸發。下面是日誌:返回inventoryData承諾值返回前被觸發
我想等到前return inventoryData
觸發檢索所有的值。我會怎麼做?
function checkInventoryUrl(url, size, code) {
var inventoryData = {};
return $http.get(url).then(function(response) {
var html = response.data;
// returns value instantly
inventoryData.url = url;
// parses html, takes a few seconds to return value
inventoryData.name = getProductName(html);
inventoryData.price = getPrice(html);
// returns promise
getProductQty(html, size).then(function(result) {
if(result) {
inventoryData.qtyAvailable = result;
console.log(inventoryData);
}
});
// returns promise
getProductMaxOrder(html, size).then(function(result) {
if(result) {
inventoryData.maxOrder = result;
console.log(inventoryData);
}
});
// returns promise
getProductSize(html, size).then(function(result) {
if(result) {
inventoryData.size = result;
console.log(inventoryData);
}
});
// fired straight away returns empty object
return inventoryData;
});
}
能否請你告訴我如何可以用我的代碼來完成的例子嗎? – methuselah
'$ q.all'會是一個很好的開始:http://stackoverflow.com/questions/21310964/angularjs-q-all – Jorg