我的发射无法与 Vue3 中的异步函数一起使用

问题描述 投票:0回答:1

我不知道为什么我的代码失败。我有一个 pinia 存储函数,必须在我的 supabase 数据库中创建一个项目以及一个使用该函数的组件。组件使用该函数,然后必须向父组件发送发射,因此我使用 async 和 wait。问题是emit 没有被发送。我知道这与承诺无关,因为控制台日志工作正常,但发出不起作用。

当我删除组件的异步和等待时,发射工作正常。

这是pinia功能

async insertar_row(row) {
    const { data, error } = await this.supabase
        .from('provisiones')
        .insert([
            row,
        ])
        .select()
    console.log("Subida exitosa")
},

这是组件函数,问题出在哪里

async function enviar_emit (){
    try{
        await useDBStore.insertar_row(data_entry)
            emits('saveModalProvision')
            console.log("Work")
    }
    catch{
        console.log('Errorrrrr')
    }
}

我需要仅当 pinia 函数结束时发射才起作用。

vuejs3 supabase pinia
1个回答
0
投票

我遇到了类似的问题,并使用

ref
watch
解决了这个问题 - 类似于:

const emit = defineEmits(['statusUpdate']);
const status = ref('');
const doSomething = async () => {
   try {
       status.value = 'started';
       const {data, error} = await someProcess();
       if(error !== undefined) throw error;
       // no error, so report success
       status.value = 'successful';
       // do stuff with data
   } catch (error) {
       status.value = 'failed';
   } finally {
       status.value = 'completed';
   }
}
watch(status, async () => {
   emit('statusUpdate', status.value)
})

基本上,每次您设置

status.value
时,它都会触发观察者发出 statusUpdate - 您可以监听它。

我很抱歉不明白为什么

emit
someProcess()
之后不能简单地工作 - 也许有人可以详细说明。

© www.soinside.com 2019 - 2024. All rights reserved.