将https.get的返回对象设置为变量

时间:2020-10-21 14:14:01

标签: javascript node.js typescript

试图将从https.get检索到的对象设置为变量,而不是将其打印到控制台。尝试使用Promises来实现此目的,但这只是返回函数本身。

const https = require("https");
if(true){
const destinationsfinal = () => {
return new Promise((resolve,reject) => {
            https
         .get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', (resp) => {
             let data = '';

             resp.on('data', (chunk) => {
                 data += chunk;
             });

             resp.on('end', () => {
             resolve(JSON.parse(data))
                 
             });
         })
         .on('error', (err) => {
             reject('Error: ' + err.message);
         });

})
 }

}

1 个答案:

答案 0 :(得分:0)

您必须解析promise,才能从函数中获取结果(这是因为它返回Promise而不是此promise的结果)。要解决此问题,您可以使用then / catch或async / await来完成。

然后捕捉

let result;
destinationsfinal()
  .then((data) => {
    result = data;
  })
  .catch((error) => {
    console.log(error);
  });
        

异步/等待

let result;
(async () => {
  try {
    result = await destinationsfinal();
  } catch (error) {
    console.log(error);
  }
})();