오늘 Linode API에이 요청을하고 있습니다.변수에 request.https 응답 받기
var options = {
hostname: 'api.linode.com',
path: '',
port: 443,
method: 'GET'
}
var req = https.request(options, function(response) {
response.setEncoding('utf8');
response.on('data', function(d) {
body = JSON.parse(d.toString());
});
response.on('end', function() {
console.log(body);
});
}).end();
출력이이 예제에서 예상대로 작동합니다.
그러나 응답을 변수에 넣고 콘솔에 기록하지 않아야합니다. console.log()
기능 또는 return
절 같은 외모가 요청의 끝을 기다리고되지 않기 때문에 위의 코드를 실행
var body = '';
var req = https.request(options, function(response) {
response.setEncoding('utf8');
response.on('data', function(d) {
body = JSON.parse(d.toString());
});
}).end();
console.log(body);
return body;
는 대답은 항상 비어 있습니다.
setTimeout(function() { console.log(body); }, 2000)
기능을 사용하여 문제가 해결되었지만 각 요청마다 시간 제한이 달라 지므로 솔직히 말해서 문제를 해결할 수는 없습니다.
내가 시도한 다른 솔루션은 while (!req.finished) {} console.log(body);
이지만 예상대로 작동하지 않습니다.
마지막으로, 나는이 추가하려고 :
response.on('end', function() {
return body;
});
을하지만,뿐만 아니라 더 성공 :(말했다
, 당신은 이전 값을 반환 요청 제한 시간이 기능 대기를 만들기 위해 어떤 제안하지 않는다
약속을 되풀이하고, '다음으로'그것이 성취 될 때 무엇인가하십시오. –
@torazaburo 예제가 있습니까? 미안 해요. 아이디어는 있어요.하지만 어떻게 할 수 있는지 모르겠군요. 감사! –
이 주제에 관해서는 약 10 가지가 넘습니다. 그들을 찾으십시오. 예를 들어 http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call을 참조하십시오. –