SweetAlert2:真的没有办法在单击按钮之前停止 JS 代码吗?

SweetAlert2: Really no way to stop JS code until a button is clicked?

在 Swal Github 中建议在 SO 中向 SweetAlert2 提问,因此我在这里发帖...

在我的(asp.net 核心)应用程序的保存按钮后面,我检查了一些东西,并且 - 在某些情况下 - 必须询问用户 (yes/no) 并且 - 根据他的选择 -必须覆盖一些数据然后存储。

如果我使用 (jQuery) 警报或确认,代码将停止,直到用户单击按钮。
在 Swal 中,我没有找到任何方法(包括“.then(“) 停止 代码,直到用户单击按钮。
显示了消息,但代码运行得更远....

真的可以用 Swal 停止代码吗...?
=>如果有办法,怎么做...?

谢谢

支持回调吧?这是我在 examples.

中找到的一些代码
    Swal.fire({
      title: 'Are you sure?',
      text: "You won't be able to revert this!",
      icon: 'warning',
      showCancelButton: true,
allowOutsideClick: false,
allowEscapeKey: false,
      confirmButtonColor: '#3085d6',
      cancelButtonColor: '#d33',
      confirmButtonText: 'Yes, delete it!'
    }).then((result) => {
      if (result.value) {
        Swal.fire(
          'Deleted!',
          'Your file has been deleted.',
          'success'
        )
      }
    })

可以根据result.value继续执行

看来,确实现在有办法 停止 JS 代码,直到用户完成他的选择
所以..我不得不改变我的逻辑。
之前的逻辑:

要检查某些东西 ( 1 ) ,显示一个 swal(例如将焦点设置到控件)然后在代码工作中显示 return(因为 return).
这样,显示消息(直到用户关闭它)并且不存储数据。
向用户询问一些事情(你真的想......”然后根据用户的回答存储日期之前做一些事情,不工作,因为 JS 代码 不会 停止,直到用户做出选择。
显示了 Der swal,但数据数据立即保存 ( 3 )(此处无需等待)。

为了达到我的需要,我不得不改变逻辑。
新逻辑

我不得不 解耦 保存的检查逻辑:
支票没有变化 ( 1 )
将数据 ( 3 ) 的保存移动到单独的函数 (SaveData())
中 给出 swal ( 2 ) 然后从 swal 函数中调用 SaveData() ( 3 )

我的swal代码:

  if ((AvatarHochgeladen) && (!(AvatarUebernommen))) {
  swal.fire({
    title: '! Achtung !',
    html: 'Sie haben eine eigene Grafik hochgeladen, diese aber nicht mit dem Button "Ihren upload übernehmen" als aktuellen Avatar übernommen. <br> Wenn Sie die Daten so speichern, geht Ihr hochgeladener Avatar verloren. <br> Wollen Sie Ihre hochgeladene Grafik als Avatar speichern?',
    icon: 'question',
    showCancelButton: true,
    confirmButtonColor: 'blue',
    cancelButtonText: 'Nein',
    confirmButtonText: 'Ja',
  }).then((result) => {
    if (result.value) {
      AvatarSpeichern = AvatarBase64;
      SaveUserdata();
    }
    else { SaveUserdata(); }
  })
  }

所以..如果用户选择"Yes",我替换一个变量并调用SaveData(),如果用户选择"No"我直接调用SaveData()。
我的结论:
由于 swal 是 "non blocking"(不要停止 运行 JS 脚本),我们必须拆分逻辑并从 swal 内部调用(根据用户选择)代码。

我试试:

function delete_rec_sub_button(id) {

    Swal.fire({
        title: 'Are you sure?',
        text: "You won't be able to revert this!",
        icon: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Yes, delete it!'
    }).then((result) => {

        if (result.isConfirmed) {

            delete_rec_sub_button.yesKill();
        }
    });

    delete_rec_sub_button.yesKill = function() {

        //real code delete(id)

        if('return sucess of delete'){
            
            Swal.fire(
            'Deleted!',
            'Your file has been deleted.',
            'success'
            )

        }else{

            Swal.fire(
            'error!',
            'Unable to delete, current record is in use',
            'error'
            )

        }

    };
}