如何在 Javascript 中进行多个异步调用来更新我的 UI 而不阻塞?
How do I make multiple async calls in Javascript to update my UI without blocking?
我在网页上有几个下拉列表,它们通过 api 调用服务器来检索它们的内容,这些都非常快,还有一个额外的调用从数据库中检索 1000 行 - 相当长的响应时间.我有这个 Javascript/Vue 代码,它在所有内容都加载完毕并准备就绪时运行:
setOrderStatuses: async function () {
...
},
setSpecialOrders: async function () {
...
},
setSubmitterNames: async function () {
...
},
...
mounted: function () {
this.$nextTick(async function () {
return await Promise.all([
this.setOrderStatuses(),
this.setSpecialOrders(),
this.setSubmitterNames()
]);
});
},
...其中一切都按预期检索数据,但是 UI 直到 all 的承诺都得到履行后才会更新。例如,如果我在服务器上放置一个断点来阻止对 setOrderStatuses()
的回答,那么其他方法都不会更新 UI,直到我单击 continue
并且承诺被填充。
jus 让你的 mouted 方法像 :
一样异步
async mounted () {
await this.setOrderStatuses()
await this.setSpecialOrders()
await this.setSubmitterNames()
}
我在网页上有几个下拉列表,它们通过 api 调用服务器来检索它们的内容,这些都非常快,还有一个额外的调用从数据库中检索 1000 行 - 相当长的响应时间.我有这个 Javascript/Vue 代码,它在所有内容都加载完毕并准备就绪时运行:
setOrderStatuses: async function () {
...
},
setSpecialOrders: async function () {
...
},
setSubmitterNames: async function () {
...
},
...
mounted: function () {
this.$nextTick(async function () {
return await Promise.all([
this.setOrderStatuses(),
this.setSpecialOrders(),
this.setSubmitterNames()
]);
});
},
...其中一切都按预期检索数据,但是 UI 直到 all 的承诺都得到履行后才会更新。例如,如果我在服务器上放置一个断点来阻止对 setOrderStatuses()
的回答,那么其他方法都不会更新 UI,直到我单击 continue
并且承诺被填充。
jus 让你的 mouted 方法像 :
一样异步async mounted () {
await this.setOrderStatuses()
await this.setSpecialOrders()
await this.setSubmitterNames()
}