在我的网络应用程序中,有两个javascript函数submitJob
和fetchJobs
。我想在fetchJob
的末尾调用submitJob
,以便用户可以看到已创建新作业(this.jobs
已连接到某些显示元素)。现在,数据库确实已更新,但前端没有更新(除非我刷新网页)。我的javascript代码如下所示
submitJob: async function() {
try {
let sel = document.getElementById('jobPriority')
let priority = Number(sel.options[sel.selectedIndex].value);
let jobData = {'priority': priority, 'data': ''};
let response = await axios.post('/api/jobs/', json=jobData,
{headers: {'Authorization': "Bearer " + this.token}});
} catch (error) { this.handleError(error); };
this.fetchJobs();
},
fetchJobs: async function() {
try {
let response = await axios.get('/api/jobs/',
{headers: {'Authorization': "Bearer " + this.token}});
this.jobs = response.data;
} catch (error) { this.handleError(error); };
},
我怀疑fetchJobs
在axios.post
返回后没有被调用。我该如何保证?我尝试将this.fetchJobs()
置于try
语句中,但它也无效。
更新:根据服务器日志,没有GET请求。只有成功的POST请求。不知道为什么会这样。
提前感谢您的帮助!
答案 0 :(得分:0)
您可以在javascript中使用promised和asyc,如下所示
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function add1(x) {
var a = resolveAfter2Seconds(20);
var b = resolveAfter2Seconds(30);
return x + await a + await b;
}
add1(10).then(v => {
console.log(v); // prints 60 after 2 seconds.
});
async function add2(x) {
var a = await resolveAfter2Seconds(20);
var b = await resolveAfter2Seconds(30);
return x + a + b;
}
add2(10).then(v => {
console.log(v); // prints 60 after 4 seconds.
});