我正在使用express
和request-promise
。在我的请求承诺之后,我无法让它重新渲染。我怎么做到这一点?
app.get('/v1/mymacro', addon.authenticate(), function (req, res) {
var rp = require('request-promise');
var url = "some-url-that-will-redirect";
res.render('page-1', {
url: ""
});
var r = rp.get(url, function (err, res, body) {
url = res.request.uri.href;
res.render('different-page', {
url: url
});
})
}
);
答案 0 :(得分:0)
使用请求承诺后,是否可以使用express重新呈现
不,您无法为同一请求拨打res.render()
两次。完成对res.render()
的第一次调用后,http连接将关闭,响应结束。第二次调用它不会向客户端发送任何内容,并会从Express生成警告。
此外,您的request-promise
代码存在错误。它返回一个promise,你应该使用那个promise,而不是试图传递一个回调。如果您想使用回调,请使用request
库,而不是request-promise
。
对于请求承诺,应采用以下形式:
rp.get(...).then(...).catch(...);
另外,代码行:
url = res.request.uri.href;
看起来不正确。如果你用这个代码解释你想要完成什么,那么也许我们可以建议一个解决方案。