Javascript 如何确保一个函数调用一个接一个地发生
在我的web应用程序中,有两个javascript函数Javascript 如何确保一个函数调用一个接一个地发生,javascript,async-await,Javascript,Async Await,在我的web应用程序中,有两个javascript函数submitJob和fetchJobs。我想在submitJob的末尾调用fetchJob,这样用户就可以看到新作业已创建(this.jobs连接到一些显示元素)。现在,数据库确实更新了,但是前端没有更新(除非我刷新网页)。我的javascript代码如下所示 submitJob: async function() { try {
submitJob
和fetchJobs
。我想在submitJob
的末尾调用fetchJob
,这样用户就可以看到新作业已创建(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); };
},
我怀疑在axios.post
返回后,不会调用fetchJobs
。我如何保证?我试图将this.fetchJobs()
放在try
语句中,但它也不起作用
更新:根据服务器日志,没有GET请求。只有成功的POST请求。不知道为什么会这样
提前感谢您的帮助 您可以在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.
});
使用
asyncFunc1()。然后(asyncFunc2)
您必须返回一个承诺,这与OP的代码有什么关系?他们已经在第一个函数中调用了wait axios.post(…)
,然后在第二行上调用第二个函数。这里必须执行submitJob()。然后在wait
一行之后,在submitJob()函数中调用OP的代码fetchJobs()
中的(=>{fetchJobs()})。这不应该有同样的效果吗?不要调用此.fetchJobs();为什么?如果您不能使用wait
关键字来等待某件事情,那么它有什么意义?