작은 문제가 있습니다. 해결 방법을 찾을 수 없습니다. Node.js HTTPS GET 요청을 사용하여 변수에 원격 JSON을로드하려고합니다. 성공했지만 코드에서 다른 곳에서는 사용할 수 없습니다. 내가 제대로 콘솔 내 .json를 기록 할 수 있어요로HTTPS GET 요청 결과 사용 [Node.js]
function getMyFile() {
var https = require('https');
https.get('URL_I_am_targeting/file.json', (res) => {
var { statusCode } = res;
var contentType = res.headers['content-type'];
let error;
if (statusCode !== 200) {
error = new Error('Request Failed.\n' +
`Status Code: ${statusCode}`);
} else if (!/^application\/json/.test(contentType)) {
error = new Error('Invalid content-type.\n' +
`Expected application/json but received ${contentType}`);
}
if (error) {
console.error(error.message);
// consume response data to free up memory
res.resume();
}
res.setEncoding('utf8');
let rawData = '';
res.on('data', (chunk) => {
rawData += chunk;
});
res.on('end',() => {
try {
const parsedData = JSON.parse(rawData);
console.log(parsedData);
} catch (e) {
console.error(e.message);
}
});
}).on('error', (e) => {
console.error(`Got error: ${e.message}`);
});
}
요청, 잘 작동 : 내 기능은 (Node.js를의 문서에서) 다음이다. 하지만 내 문제는 내 코드의 다른 곳에서는 상수 "parsedData"를 사용할 수 없다는 것입니다. 나는 내 함수에서 여러 곳에서 내
return parsedData;
을 쓰려고했지만 내 코드에서이 함수를 사용할 때 f를 시도한다. 이자형.
var fileContent = getMyFile();
console.log(fileContent);
fileContent가 정의되지 않았습니다. 그것은 parsedData가 요청에서 벗어날 수없는 것과 같습니다. 로그 된 오류가 없으며 요청은 정상적으로 처리되지만 콘텐츠를 사용할 수 없습니다.
저는 자바 전문가가 아니며, 아마도이 요청에서 가치를 반환하는 것이 잘못되었습니다.
누군가 내가 틀린 위치를 알고 있고 트릭을 할 수 있다면, 크게 감사하겠습니다! 감사합니다.
당신은 당신의 기능을위한 약속 기반의 래퍼 쓸 수
과 같이 호출. 'callback','promise' 또는 새로 정의 된'async/await' 함수를 사용해야합니다. JS의 콜백 특성에 대해 배우는 것으로 시작하는 것이 좋습니다. – magreenberg
사실,이 함수의 비동기 성질을 알아 채지 못했으며이를 처리 할 약속을 만드는 방법을 알지 못했습니다. [비동기 호출에서 응답을 어떻게 반환합니까? - Robby Cornelissen] (https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)을 이해하고 @ 31piy 및 js_noob의 답변이 매우 유용했습니다. ! –