연습중
20
2021-02-24 16:45:08 작성 2021-02-24 16:45:46 수정됨
5
132

(node.js) 콜백 함수 질의 시 반환되는 값을 Return 하여 전역 변수로 대입하여 사용하고 싶습니다.


AWS SDK로 ec2 인스턴스 Describe의 내용을 콜백 함수를 실행하여 JSON 형태로 DATA를 받아와서 

전역 변수로 넣어준 다음 사용을 하려고 합니다. 

Node.js에 대한 이해도가 부족하여 질문 드리면서 부족한 점은 양해 부탁드립니다.


test 변수에 JSON DATA를 담을 수 있나요?

ec2.describe 함수는 콜백함수(비동기)입니다.

var AWS = require("aws-sdk");

AWS.config.getCredentials(function(err) {
  if (errconsole.log(err.stack);
  else {
  }
});

AWS.config.update({region: 'ap-northeast-2'});

var ec2 = new AWS.EC2({apiVersion: '2016-11-15'});

var params = {
  DryRun: false
};

const getEc2Info = async function () {  
  try {
    const insta = await ec2.describeInstances(paramsfunction(errdata){
      return JSON.stringify(data);
    });
    console.log(insta);
  }
  catch (e) {
    return 'caught';
  }
}

console.log(getEc2Info());
const test = getEc2Info();
console.log(test);

module.exports = getEc2Info
0
  • 답변 5

  • hoonnote
    628
    2021-02-24 16:53:55

    저거 async함수에서 리턴하는게 아무것두 없잖아요 


    getEc2Info 

        insta = describeinstance해서 리턴된 값을 담고있는데



    getEc2Info에는 아무 값도 리턴받지 않으니까


    getEc2Info 

        insta = describeinstance해서 리턴된 값을 담고있는데

        return insta


    뭐 이런식으루 하면 


    const test = getEc2Info() 이니시애잇 하면 인스타 값 받아 쓸수있지 않나요

  • 연습중
    20
    2021-02-24 17:03:39

    말씀 주신 방식으로 해봤는데 Data가 아닌 Promise(pending) 객체가 반환되네요...

    Promise객체를 Data로 변환할 수 있나요?

  • 페코옹
    1k
    2021-02-24 17:12:08

    요렇게 해보세요


    const getEc2Info = () => {
      return new Promise((resrej=> {
        ec2.describeInstances(params, (errdata=> {
          if (errrej(err);
          res(JSON.stringify(data));
        });
      });
    };

    getEc2Info()
      .then((data=> {
        console.log(data);
      })
      .catch((err=> {
        console.log(err);
      });

    const app = async () => {
      const test = await getEc2Info();
      console.log(test);
    };

    app();

  • 연습중
    20
    2021-02-24 17:49:01

    console.log로 Data 출력은 잘 됩니다. 

    근데 아래 코드와 같이 변수에 값을 넣게 되면 promise(pending)이 떨어지는데,

    변수에 json 데이터가 출력될 수 있도록 설정이 가능할까요?

    const tes = app();

    console.log(tes);


  • 피자7
    637
    2021-02-24 17:53:25 작성 2021-02-24 17:53:39 수정됨

    비동기에 대한 개념이 없으면 이해가 어렵습니다

    선행으로라도 콜백이랑 프로미스 그리고 async await 먼저 알으셔야 할듯

  • 로그인을 하시면 답변을 등록할 수 있습니다.