다음 코드는 일부 원격 서버 (kafka 브로커)에 요청 메시지를 생성하고 이에 대한 응답을 기다리기 위해 http 요청을 처리해야합니다. 응답 메시지가 도착하면 http 응답 (json 또는 something)으로 리턴되어야합니다.Node.js 비동기 함수
router.get('/status', function(req, res, next) {
// init the producer
...
// 1st async function
producer.on('ready', function() {
// some code for generating payloads (data for a message)
...
// 2nd async function
producer.send(payloads, function (err, data) {
// some log of success sending message
...
// 3rd async function
consumer.on('message', function (message) {
// got some response message
res.send("message: " + message);
});
});
});
});
내 동기화가 아닌데도 동기화 할 수 있습니까?
편집 : 더 명확하게하려고합니다. 다음 코드를 고려하십시오.
function boo() {
// part 1 - init some consumer
console.log("1. finish init");
// part 2 - This is async function. whenever messages will arrive - this function will be fetched.
consumer.on('message', function (message) {
console.log("2. message arrive!");
return message;
}
// part 3
console.log("3. end function");
return null;
}
부분 2는 1 초 후에 발생한다고 가정합니다. 결과는 다음과 같습니다.
1. finish init
3. end function
2. message arrive!
목표는 비동기 메시지 (2 부)를 기다리고 값을 반환하는 것입니다. 어떻게하면 될까요?
나는 문제가 발생하지 않았습니다. 질문이 뭐야? (아주 좋은 콜백 지옥, 그런데 :) –
이것은 코드의 완전한 예제는 아니며 예/아니오 질문과 같이 읽습니다. 나는 또한 당신이 "함께 동기화"를 의미하는지 모르겠습니다. – Paul
기본적으로 온라인에서 많은 답변을 찾을 수있는 인기있는 "비동기 코드 실행 순서"질문을합니다. – Cristy