延迟RES.REDIRECT,直到功能完成?或完成后刷新页面?

时间:2019-04-02 20:38:46

标签: javascript node.js express

我需要“延迟” 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调用?如果可能的话,怎么办?

1 个答案:

答案 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');
        });
});