2017-12-21 12 views
0

[편집]node.js에서 json을 사용하기 전에 json이로드 될 때까지 기다리는 방법은 무엇입니까?

나는 그것을 알아 냈다. 코드는 다음과 같이 끝 :

//getTrelloJSON.js 
var request = require('request'); 
'use strict'; 

function getProjJSON(requestURL, callback){ 
    request.get({ 
     url: requestURL, 
     json: true, 
     headers: {'User-Agent': 'request'} 
     }, (err, res, data) => { 
     if (err) { 
      console.log('Error:', err); 
     } else if (res.statusCode !== 200) { 
      console.log('Status:', res.statusCode); 
     } else { 
      callback(data); 
     } 
    }); 
} 

module.exports.getProjJSON = getProjJSON; 

그리고

//showData.js 
var getJSON = require('./getTrelloJSON'); 

getJSON.getProjJSON('https://trello.com/b/saDpzgbw/ld40-gem-sorceress.json', (result) => { 
    var lists = result.lists; 
    console.log(lists); 
}); 

나는 node showData.js를 실행하고는 JSON을 얻고, 필요에 따라 다음 나는 그것을 조작 할 수 있습니다. 나는 그것이 효과가 있다는 것을 보여주기 위해 인쇄했다.

[편집 END]

내가 Node.js를 새로운 그리고 난 놈의 문제에 직면하고있다. 이 코드는 public trello 보드에서 JSON을 요청하고 trello 's json (섹션 섹션) 섹션이있는 객체를 반환합니다.

첫 번째 console.log()은 작동하지 않지만 두 번째는 작동하지 않습니다.

인쇄하기 전에 getProjJSON()의 완료를 기다리는 방법은 무엇입니까?

var request = require('request'); 
'use strict'; 

//it fails 
console.log(getProjJSON('https://trello.com/b/saDpzgbw/ld40-gem-sorceress.json')); 

function getProjJSON(requestURL){ 
    request.get({ 
     url: requestURL, 
     json: true, 
     headers: {'User-Agent': 'request'} 
     }, (err, res, data) => { 
     if (err) { 
      console.log('Error:', err); 
     } else if (res.statusCode !== 200) { 
      console.log('Status:', res.statusCode); 
     } else { 
      //it works 
      console.log(data.lists); 
      return data.lists; 
     } 
    }); 
} 
+0

Node.js를 모든 콜백에 관한 해결되기를 바랍니다. console.log (data.lists)를 원하면 응답 본문에 로그인하십시오. – forqzy

+0

첫 번째 console.log는 인쇄를 시도 할 때 JSON obj가 준비되지 않았 음을 보여줍니다. 코드는 반환하기 전에 JSON이로드 될 때까지 기다려야합니다. 나는 그걸하는 법을 모른다. –

답변

0

Node.js는 모두 콜백에 관한 것입니다. 여기에서는 데이터에 대한 콜백을 등록하지 않습니다. 여기

var client  = require('http'); 
var options = { 
      hostname: 'host.tld', 
      path: '/{uri}', 
      method: 'GET', //POST,PUT,DELETE etc 
      port: 80, 
      headers: {} // 
      }; 
    //handle request; 
pRequest = client.request(options, function(response){ 
console.log("Code: "+response.statusCode+ "\n Headers: "+response.headers); 
response.on('data', function (chunk) { 
     console.log(chunk); 
}); 
response.on('end',function(){ 
     console.log("\nResponse ended\n"); 
}); 
response.on('error', function(err){ 
     console.log("Error Occurred: "+err.message); 
}); 

}); 

하거나, 전체 예입니다이 문제

const postData = querystring.stringify({ 
    'msg' : 'Hello World!' 
}); 

const options = { 
    hostname: 'www.google.com', 
    port: 80, 
    path: '/upload', 
    method: 'POST', 
    headers: { 
    'Content-Type': 'application/x-www-form-urlencoded', 
    'Content-Length': Buffer.byteLength(postData) 
    } 
}; 

const req = http.request(options, (res) => { 
    console.log(`res_code: ${res.statusCode}`); 
    console.log(`res_header: ${JSON.stringify(res.headers)}`); 
    res.setEncoding('utf8'); 
    res.on('data', (chunk) => { 
    console.log(`res_data: ${chunk}`); 
    }); 
    res.on('end',() => { 
    console.log('end of response'); 
    }); 
}); 

req.on('error', (e) => { 
    console.error(`response error ${e.message}`); 
}); 

//write back 
req.write(postData); 
req.end(); 
+0

고맙습니다. –