sweetalert 不在 vue3 的异步方法中等待

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

我正在尝试将 SweetAlert2 与 Vue3(组合 API)一起使用。使用以下代码,警报不会等待单击其按钮:

onBeforeMount(async() => {
  Swal.fire('test message');
  initialiseArrays();
  await getRides();
});

如果我删除

async

onBeforeMount(() => {
  Swal.fire('test message');
  initialiseArrays();
  //await getRides();
});

async
添加到“Swal”调用中,它按预期工作:

onBeforeMount(async() => {
  async Swal.fire('test message');
  initialiseArrays();
  await getRides();
});

函数

getRides
等待来自服务器的数据并填充一些列表。我实际上不需要在
Swal
中使用
onBeforeMount()
,但它将在
getRides
内部更深入地使用,除非我在每次使用
await
时添加
Swal
,否则它不会起作用。但这意味着几乎要实现我的代码的每个功能
async
- 这不可能是正确的!

我尝试将部分

getRides
代码移至
onMounted
钩子中,但这是在数据完全加载之前调用的,因此会导致复杂化。不过,除非没有其他解决方案,否则我会继续使用此方法。

vuejs3 sweetalert2
1个回答
0
投票

我不知道(或忘记)

Swal
是非阻塞的,所以只要调用第二个就会立即销毁第一个,除非其中之一

  • 每个调用都有
    await
    ,这意味着使用它的任何函数都必须声明
    async
    ,(请参阅 here 了解完整答案)或
  • 在第一个回调中调用后续警报 - 请参阅here了解更多详细信息 - 这将需要我进行一些代码重组。
© www.soinside.com 2019 - 2024. All rights reserved.