繁体   English   中英

Node.js将数据返回异步函数失败

[英]Node.js return data to async function fails

运行下面的代码后,在console.log中未定义。

我试图返回已解决的Promise,但失败了。 没有错误。

控制台输出为:getData():未定义

谁能发现我的问题?

function getData(){
  var url = 'https://pigfox.com/api/v1/test';
  https.get(url, res => {
      res.setEncoding("utf8");
      res.on('data', data => {
        return new Promise(resolve => {
          resolve(data);
        });
      });
  });   
}

async function go(){
    var rs = await getData();
    console.log('getData(): ' + rs);
}

go();

您可以将await视为“解开”承诺。 目前,您的getData不会返回Promise ,因此没有什么可“解包”的。 尽管确实在函数中return new Promise ,但实际上是在返回内部回调函数,而不是外部getData函数。

因此,您需要将.get方法包装在Promise中,并解析数据:

function getData() { 
  var url = 'https://pigfox.com/api/v1/test';
  return new Promise(resolve => { // getData returns a promise
    https.get(url, res => {
      res.setEncoding("utf8");
      res.on('data', data => {
        resolve(data); // resolve data which can be "unpacked" using await
      });
    });
  });
}

async function go() {
  var rs = await getData(); // now we can "unpack" the promise
  console.log('getData(): ' + rs);
}

go();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM