Node.js 只执行了一个函数
Node.js only one function executed
我尝试在 post 请求中执行两个函数,但只触发了一个。函数 makeEntry 执行但之后的函数 renderEntries 不执行。任何人都可以帮忙吗?
这是代码:https://codepaste.net/bpsxsy
这是由于回调在 Javascript 中的工作方式。这是重要的部分:
app.post('/guestbook_post', urlencodedparser, function(req, res){
makeEntry(req, res, Guestbook);
renderEntries(res, Guestbook);
});
您将 res
传递给两个函数。但是 makeEntry
调用 res.send()
这意味着它将结束请求并将响应发送回客户端。但是,renderEntries
还没有执行,还在事件循环中等待。它将在您下次发出 post 请求时执行,这将导致非常混乱和错误的行为。
为了使其按预期工作,将函数 makeEntry
和 renderEntries
重构为 return 所需的结果对象并将其呈现给客户端一次。像这样:
app.post('/guestbook_post', urlencodedparser, function(req, res){
makeEntry(req, Guestbook, (err, entry) => {
renderEntries(entry, Guestbook, (err, result) => {
res.send(result);
});
});
});
我尝试在 post 请求中执行两个函数,但只触发了一个。函数 makeEntry 执行但之后的函数 renderEntries 不执行。任何人都可以帮忙吗? 这是代码:https://codepaste.net/bpsxsy
这是由于回调在 Javascript 中的工作方式。这是重要的部分:
app.post('/guestbook_post', urlencodedparser, function(req, res){
makeEntry(req, res, Guestbook);
renderEntries(res, Guestbook);
});
您将 res
传递给两个函数。但是 makeEntry
调用 res.send()
这意味着它将结束请求并将响应发送回客户端。但是,renderEntries
还没有执行,还在事件循环中等待。它将在您下次发出 post 请求时执行,这将导致非常混乱和错误的行为。
为了使其按预期工作,将函数 makeEntry
和 renderEntries
重构为 return 所需的结果对象并将其呈现给客户端一次。像这样:
app.post('/guestbook_post', urlencodedparser, function(req, res){
makeEntry(req, Guestbook, (err, entry) => {
renderEntries(entry, Guestbook, (err, result) => {
res.send(result);
});
});
});