2 回答

TA貢獻(xiàn)1853條經(jīng)驗 獲得超6個贊
new Promise當(dāng)$.ajax已經(jīng)返回一個諾言時,不要用創(chuàng)建諾言。
另外,您只能await在async函數(shù)中使用。而且,在回調(diào)get_initial_prices中calculate_savings和在ready回調(diào)中調(diào)用都沒有意義。
例如:
function get_initial_prices() {
var size_selected = $('input[name=size]:checked').val();
var c_slug = $('.c_slug').text();
var product_slug = $('.product_slug').text();
return $.ajax({
url: "/prices/",
data: { // Pass parameters in separate object
size_selected: size_selected,
c_slug: c_slug,
product_slug: product_slug
},
}).then(function (response) {
$('#prices').empty();
var prices = response.prices;
$('.price').text(function (index) {
return "S/ " + prices[index];
});
});
}
async function calculate_savings() {
await get_initial_prices();
var prices = $(".price").map(function () {
return $(this).text().replace('S/ ', '');
}).get().join();
alert("savings: " + prices);
}
$("document").ready(function () {
calculate_savings();
});
我應(yīng)該補充一點,盡管首先使用響應(yīng)將價格寫在頁面上,然后立即將這些價格再次從頁面提取到數(shù)組中是很奇怪的。似乎您應(yīng)該只跟蹤響應(yīng),而該響應(yīng)已經(jīng)是一個數(shù)組。

TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊
函數(shù)的簡化版本(注意“數(shù)據(jù)”和“ responseData”變量)
function get_initial_prices() {
return new Promise(resolve => {
$.ajax({
url: "/prices/"
}).done(function (data) {
alert('get_initial_prices fired!');
resolve(data);
});
})
}
function calculate_savings(responseData) {
alert(responseData);
}
$(document).ready(function() {
get_initial_prices().then(calculate_savings);
});
添加回答
舉報