Javascript 使用异步/等待调用挂起vue组件
我使用vue框架迈出了第一步,但我无法解决以下问题Javascript 使用异步/等待调用挂起vue组件,javascript,vuejs2,async-await,vue-component,Javascript,Vuejs2,Async Await,Vue Component,我使用vue框架迈出了第一步,但我无法解决以下问题 dateClick(arg) { this.cal.date = arg.date; this.cal.title = arg.resource.title; this.cal.resource = arg.resource.id; // const slots = (async() => { //
dateClick(arg)
{
this.cal.date = arg.date;
this.cal.title = arg.resource.title;
this.cal.resource = arg.resource.id;
// const slots = (async() => {
// return await dataService.getSlots(arg);
// })().catch(console.error);
// console.log(slots);
(async() => {
const slots = await dataService.getSlots(arg);
console.log(slots);
})().catch(console.error);
}
异步函数中的console.log工作正常并返回插槽。最后,我还需要在当前Vue组件中设置一个数据属性,如下所示。cal.slots=slots。但这不起作用,总是没有定义。我还尝试使用上面的注释代码返回wait-这将导致“Promise{pending}”。想不出如何解决这个问题吗?试着这样做:
async dateClick(arg) {
...
this.cal.slots = await dataService.getSlots(arg);
...
我已经试过了,但是如果我在这个解决方案之后创建一个console.log(this.cal.slots),它会产生“{ob:Observer}”…如果您的组件
数据中有cal.slots
,那就好了。这意味着vue正在监视此属性,以便在模板发生更改时反应性地重新渲染模板。我认为您是对的,目前它正在按预期工作-谢谢!