如何在 res.redirect() 之前等待

How to wait before res.redirect()

我的 HTML 文件中有一个按钮,当单击它并提交表单时,它会调用 post 路由。单击按钮还会调用我的另一个 javascript 文件中的一个函数,该函数会激活一个 'sweetalert' 警报框。

但是,我现在遇到的问题是,在 post 请求执行 res.redirect("/").

之前,用户没有足够的时间阅读警报

我希望得到以下任何一种解决方案:

1) 在页面重定向后调用警报(我在某处读到您无法使用 node.js 控制下一页,所以这可能是不可能的)。

2) 在调用 res.redirect("/") 之前等待几秒钟。

3) 任何其他合适的解决方案。

HTML 包含按钮的文件:

<button formaction="/removetask" type="submit" id="top" class="btn btn-primary btn-block" onclick="success()"> Complete </button>

客户端javascript文件:

function success(){
  ...
  swal("Congratulations!", "Goal successfully completed", "success")

}

node.js 文件:

app.post("/removetask", async function(req, res) {
  ...
  res.redirect("/");  
});

link 到 'sweetalert' 在 HTML:

<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>

编辑:

我注意到使用常规 HTML alert() 会停止一切并阻止重定向,直到用户关闭警报。是否可以将“sweetalert”警报更改为这样的行为?

您可以尝试其他方式显示告警。

首先,您不需要重定向到原始页面。

app.post("/removetask", async function(req, res) {
  ...
  res.render('alarm page') 
});

并且在报警页面,javascript文件会设置等待片刻的时间

alarmpagejs.js关注

  setTimeout(() => {
     window.location = "/";
  }, 5000)

那么结果就是这样的逻辑:

  1. 按钮点击
  2. 渲染报警页面
  3. 通过警报重定向到“/”page.js

您可以等待任意毫秒数

我稍微修改了你的代码。 现在点击表单不是提交。

在您点击成功按钮后,表单将被提交。

HTML:

<button type="button" id="top" class="btn btn-primary btn-block" onclick="success()"> Complete </button>

JS:

function success(){
  swal({
  title: "Congratulations!",
  text: "Goal successfully completed",
  type: "success",
  }).then(function(){ 
      document.getElementById('form').submit();
  });
}

https://code.sololearn.com/WGoSH0qXkP9I/#html