나는 조언을 찾고 있으므로 여기 어딘가에서 요점을 놓치고있을 것입니다.노드의 콜백 결과를 별도의 함수로 사용하기
클라이언트 연결을 수신하고 수신 된 데이터를 기반으로 nodejs 서버에 API 호출이 있습니다.
해당 API에 대한 첫 번째 호출은 함께 그룹화하기 위해 후속 호출에서 사용해야하는 ID를 가져옵니다.
내가 고심하는 것은 API 호출이 반드시 비동기이며 콜백에서 ID를 변수에 할당한다는 것입니다. 비동기 호출이 API 서버에 의해 처리되는 동안 더 많은 데이터가 클라이언트에서 들어오고 더 많은 API 호출이 필요하지만 두 번째 호출이 의존하여 첫 번째 호출의 결과를 알기 전까지는 호출 할 수 없습니다.
이 문제를 해결하는 적절한 방법은 무엇입니까? 두 번째 API 호출의 결과를 약속하기 위해 Q를 사용해야하는 것처럼 느껴지지만 구조화 방법을 잘 모르겠습니다. 또는 첫 번째 완료 될 때까지 API 호출을 대기열에 두어야합니까? 내가 어떻게 그럴 수 있니?
예 문제 코드 :
var server = net.createServer();
//set up the callback handler
server.on('connection', handleConnection);
handleConnection(conn) {
//do some stuff...
firstAPICall();
conn.on('data', handleData);
}
handleData(data) {
//do some stuff...
otherAPIcall();
}
firstAPICall() {
client.get("http://myAPI/getID", function (data, response) {
conn.myID = data[0].myID;
}
}
}
otherAPICall() {
//How do I make sure I actually have a value
//in conn.myID from the first function???
client.post("http://myAPI/storeData", { data: {myID:conn.myID, data:someData} }, function (data, response) {
//do some stuff...
}
}
}
누락 된 점은 "해당 API에 대한 첫 번째 호출은 이후의 호출을 함께 그룹화하는 데 사용해야하는 ID를 얻습니다."입니다. 요구 사항이거나 그렇지 않습니다. 너의 마음을 위로해라 – Tibrogargan