게시 요청에서 두 가지 기능을 실행하려고 시도하지만 하나만 실행됩니다. 함수 makeEntry가 실행되지만 그 이후의 함수 renderEntries는 실행되지 않습니다. 누구든지 pls 수 있습니까? 다음은 코드입니다. https://codepaste.net/bpsxsyNode.js 함수가 하나만 실행되었습니다.
0
A
답변
2
이것은 자바에서 콜백이 작동하는 방식 때문입니다. 중요한 부분은 다음과 같습니다.
app.post('/guestbook_post', urlencodedparser, function(req, res){
makeEntry(req, res, Guestbook);
renderEntries(res, Guestbook);
});
두 기능에 모두 res
을 전달합니다. 그러나 makeEntry
은 res.send()
을 호출합니다. 이는 요청을 끝내고 응답을 클라이언트에 다시 보냅니다. 그러나 renderEntries
은 아직 실행되지 않았지만 여전히 이벤트 루프에서 대기 중입니다. 다음에 요청을 게시하면 실행될 것이므로 매우 혼란스럽고 버그가있는 행동으로 이어질 것입니다.
makeEntry
및
renderEntries
을 intendeed로 작동 한 번 클라이언트에 렌더링 확인하십시오. 다음과 같이 입력하십시오 :
app.post('/guestbook_post', urlencodedparser, function(req, res){
makeEntry(req, Guestbook, (err, entry) => {
renderEntries(entry, Guestbook, (err, result) => {
res.send(result);
});
});
});
+0
Thx이지만 사용자가 로그인하면 res.send()가 실행되지 않습니다. –
+0
별도로 제기 할 수있는 또 다른 질문입니다. "하나의 기능 만 실행되었습니다"라는 문제를 해결하면이 질문을 "수락 됨"으로 표시하십시오. –
자세한 정보를 제공해 주시겠습니까? 어떤 오류가 발생할 수 있습니까? 사용자가 로그인하지 않은 경우 발생합니까? – Kostas
사용자가 로그인하지 않으면 send()가 실행되고 renderEntries()없이 응답이 수행됩니다. 그러나 renderEntries는 사용자가 로그인하면 실행되지 않으며 res.send()는 실행되지 않습니다. –
두 함수는 모두 실행되지만 게시물은 –