我不知道为什么我的代码失败。我有一个 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 函数结束时发射才起作用。
我遇到了类似的问题,并使用
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()
之后不能简单地工作 - 也许有人可以详细说明。