我正在建立一个项目的购物网站。我目前正在使用javascript编写loadcart方法。基本上发生的是,我将购物车数据存储在会话存储中。如果在会话存储中找不到购物车数据,我将从数据库中获取。我将函数设为异步函数,因为我的getshoppingcartDB函数是异步方法。
当会话存储中没有数据时,我希望我的方法输入if子句,从数据库中获取数据并更新购物车数组。但是,我的购物车数组仍然为空。我注意到购物车数组后来被仅更新,如屏幕截图所示。
这样,我有点好奇等待功能如何?我以为await应该先等待响应,但是在这里似乎异步执行了。
这是我的购物车功能
// Load cart
cart = [];
async function loadCart() {
console.log("LOAD CART")
var uname = document.getElementById("username").innerText
uname = uname.trim();
if (sessionStorage.getItem("shoppingCart") === null) {
console.log("check null")
const cartdata= await getshoppingcartDB(uname);
cart = cartdata
}else{
cart = JSON.parse(sessionStorage.getItem('shoppingCart'));
}
return cart
}
loadCart().then(function(response){
cart = response
})
这是我用于从数据库检索数据的异步功能
async function getshoppingcartDB(email) {
let params = {
"email": email
};
let query = Object.keys(params)
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
.join('&');
let url = '/getcartdatabyemail?' + query;
const response = await fetch(url);
return response.json()
}
PS:我按照Mike的建议编辑了函数,但stll似乎不起作用?我似乎也无法执行结果=等待loadCart()。