javascript - 延迟 RES.REDIRECT 直到函数完成?或完成时刷新页面?
问题描述
我需要'延迟' res.redirect('/foo') 直到某些功能完成它们的任务并且我需要你的帮助。
/foo 页面是从数据库中填充的。当用户完成交易后,我需要去处理记录,然后删除记录,最后对现在空的数据库“重新加载”/foo(准备好新输入,所以空白)
当它坐下时, /foo 加载了当前数据(如果它要等到 doThis 和 thenThisCallback 完成,它就没有要显示的数据,这是我正在尝试的)。
我可以在最后一个功能完成后进行“页面刷新”吗?有点像 location.reload() 或 window.location.href='/foo'。(我试过了,但 Node 不喜欢我的尝试)。
app.get('/foo/bar/:aparam', function(req, res) {
doThis(a, thenThisCallback)
// Dont redirect until 'thenThisCallback' is finished
res.redirect('/foo');
})
当我的最后一个功能完成并且我知道数据库已清除过期数据时,我想“刷新”或“按需”重定向。目前,如果我的删除操作完成,Node 不在乎 :)
也许我可以省略路由中的 res.redirect('/foo') 并在最终函数中对 /foo 进行 GET 调用?如果可以,怎么做?
解决方案
您可以修改函数的返回值,doThis
使其返回回调函数,并且该回调函数返回一个Promise<void>
. 这样做,您可以在该函数解析后链接操作。
// I'm not 100% sure about the parameters
const promisedCallback = (...params) => {
return new Promise((resolve, reject) => {
thenThisCallback(...params);
resolve();
});
};
app.get('/foo/bar/:aparam', function(req, res) {
doThis(a, promisedCallback)
.then(() => {
res.redirect('/foo');
});
});
推荐阅读
- c# - C# 获取具有特定且完全匹配的扩展名的文件
- python - 调整现有代码和内核代码以执行大量 3x3 矩阵求逆
- cxf - 是否可以将 Apache CXF 与 Quarkus 一起使用,并进行本机编译?
- c - 如何解决这个 if else 语句?c prog
- google-api - 使用服务帐号为用户创建团队云端硬盘
- c# - ASP.Net Core 2.1 中间件 WindowsPrincipal ClaimsPrincipal
- java - 从不同的类调用同名方法
- geopandas - GeoViews:使用多边形几何图形向叶绿体添加滑块
- java - 无法通过 javaRDD 进行迭代器
- amazon-web-services - Amazon CloudFront URL 问题