post请求同步异步的各种问题
2023-12-13 12:14:14
?以下是能正常获取值再往下走的案例:loadCalender方法能正常获取holidays之后再执行其他
async function loadDateNoteData() {
try {
let res = await $.post('/query', {yearMonth : '2023-12'}); //await在这里等待post请求完成
if(res.code == 0){
return res.data;
} else {
layer.msg('获取失败!', {icon: 5});
return [];
}
} catch (error) {
console.error('获取异常: ', error);
return [];
}
}
function loadCalender(elem) {
loadDateNoteData().then((res) => { // 返回值res就是 后台获取到的休息日
holidays = res
//.....加载其他
}).catch((error) => {
layer.msg('加载异常:'+ error, {icon: 5});
});
}
以下的post请求方法执行后holidays会因为post请求异步的问题还没返回就已经执行到下面的逻辑去了,因此holidays永远都没值
async function loadDateNoteData() {
$.post('/query', {yearMonth : '2023-12'}, function(res) {
if(res.code == 0){
return res.data;
} else {
layer.msg('获取失败!', {icon: 5});
return [];
}
});
}
function loadCalender(elem) {
loadDateNoteData().then((res) => { // 返回值res会直接是undefined,即时给了then等待返回再执行下面的依旧如此,因为loadDateNoteData的post请求是异步的,因此还没执行完就已经返回了
holidays = res
//.....加载其他
}).catch((error) => {
layer.msg('加载异常:'+ error, {icon: 5});
});
}
在JavaScript中,await关键字是在ES2017(也称为ES8)版本中正式引入的。这个版本引入了async/await语法,用于简化异步操作的处理。async关键字用于声明一个函数是异步函数,而await关键字则用于等待一个Promise对象的解决,只能在异步函数中使用。因此,只有在ES2017或更高版本的JavaScript环境中,你才能使用await关键字。【我的js是3.5版本】
文章来源:https://blog.csdn.net/qq3892997/article/details/134826069
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!