2 回答
TA贡献1853条经验 获得超6个赞
new Promise当$.ajax已经返回一个诺言时,不要用创建诺言。
另外,您只能await在async函数中使用。而且,在回调get_initial_prices中calculate_savings和在ready回调中调用都没有意义。
例如:
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();
});
我应该补充一点,尽管首先使用响应将价格写在页面上,然后立即将这些价格再次从页面提取到数组中是很奇怪的。似乎您应该只跟踪响应,而该响应已经是一个数组。
TA贡献2016条经验 获得超9个赞
函数的简化版本(注意“数据”和“ 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);
});
添加回答
举报