我需要“延迟” 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调用?如果可能的话,怎么办?
答案 0 :(得分:0)
您可以修改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');
});
});