외부 API에 대한 게시물 요청을 작성한 다음 게시물 요청의 응답을 기반으로 사용자 정의 클래스의 개체를 만들고 싶습니다. 요청 모듈을 사용하여 게시 요청을합니다. 콜백 함수에서 객체를 반환하기 만하면되지만 콜백이 완료되기 전에 함수가 반환하는 것처럼 보이므로 null 객체가 항상 반환됩니다. 함수가 콜백 함수를 기다리게하려면 어떻게해야합니까? 포스트 요청을요청 모듈 (Typescript)의 콜백
기능 :
if (parsedJson["status"] === "200")
결코 참이 없습니다 :
read(id: string) {
request.post({
headers: {
"content-type": "application/json"
},
url: baseUrl + service,
json: {
"id": id
}
}, function(error: any, response: http.IncomingMessage, body: any) {
if (!error && response.statusCode === 200) {
var parsedJson = JSON.parse(JSON.stringify(body));
/* tslint:disable:no-string-literal */
if (parsedJson["status"] === "200") {
var data = parsedJson["data"];
return new Dummy.Dummy(id, data["dummy"]["value"], data["dummy2"]["value"], data["dummy3"]["value"]);
}
/* tslint:enable:no-string-literal */
}
});
}
'if' 체크 안에 새로운 Dummy 객체를 로깅하려고 시도했는데, Dummy 객체를 올바르게 출력하므로'if' 내부로 들어갑니다. 또한 나는'body'를 처음에 문자열을 지정하지 않고 (당신이 제안한 이유로) 해봤지만 작동하지 않았다. (왜 그런지 모르겠다.) 그러나 stringifying 후에도 작동한다. (왜 그런지 모르겠다.) – fluffychaos
'request.get'에 대한 문서를 확인했습니다. 힘을 요청하도록'json' 매개 변수를 설정하면 자동으로'응답 '본문을 JSON으로 구문 분석하므로'body [ "status"] == 사용할 수있는'var parsedJson = JSON.parse (body);'코드는 필요 없습니다. = "200"대신. 내 대답을 확인하여 몇 가지 추가 설명을 편집하십시오. – SergeyK
예를 들어 주셔서 감사합니다. 실제로'read' 함수를 호출하는 함수에 Dummy 객체를 실제로 반환하는 방법에 관해서는 혼란 스럽습니다. 위에서 간단히 말해 Dummy 객체를 param으로 가져온 콜백 함수를 만든 다음 Dummy 객체를 반환합니다. 그런 다음 함수를 param으로 전달하여'read' 함수를 호출합니다. 그러나 함수는 여전히 콜백을 끝내기 전에 반환됩니다 ... – fluffychaos