Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js函数返回未定义的值,尽管定义了值_Javascript_Node.js - Fatal编程技术网

Javascript Node.js函数返回未定义的值,尽管定义了值

Javascript Node.js函数返回未定义的值,尽管定义了值,javascript,node.js,Javascript,Node.js,我正试图编写一个函数,从新冠病毒-19 API中提取数据。以下是我的功能: function covidcases(){ var http = require('follow-redirects').http; var fs = require('fs'); var options = { 'method': 'GET', 'hostname': 'covidtracking.com', 'path': '/api/us', 'headers':

我正试图编写一个函数,从新冠病毒-19 API中提取数据。以下是我的功能:

function covidcases(){
  var http = require('follow-redirects').http;
  var fs = require('fs');
  
  var options = {
    'method': 'GET',
    'hostname': 'covidtracking.com',
    'path': '/api/us',
    'headers': {
    },
    'maxRedirects': 20
  };
  
  var req = http.request(options, function (res) {
    return new Promise((resolve, reject) => {
      var chunks = [];
  
      res.on("data", function (chunk) {
        chunks.push(chunk);
      });
    
      res.on("end", function (chunk) {
        var body = Buffer.concat(chunks);
        console.log("From the console.log: "+body.toString());
        resolve(body.toString());
      });
    
      res.on("error", function (error) {
        reject(error);
      });
    })
  });
  
  req.end();
  }
  module.exports = {covidcases}
  console.log(covidcases())
在visual studio代码中运行时,结果如下:

undefined
From The console.log: [{"date":20201011,"states":56,"positive":7727630,"negative":102250976,"pending":11261,"hospitalizedCurrently":34028,"hospitalizedCumulative":423058,"inIcuCurrently":6583,"inIcuCumulative":21553,"onVentilatorCurrently":1614,"onVentilatorCumulative":2454,"recovered":3075077,"dateChecked":"2020-10-11T00:00:00Z","death":206597,"hospitalized":423058,"totalTestResults":115424481,"lastModified":"2020-10-11T00:00:00Z","total":0,"posNeg":0,"deathIncrease":464,"hospitalizedIncrease":999,"negativeIncrease":800029,"positiveIncrease":46776,"totalTestResultsIncrease":943645,"hash":"deda38c4ef4e1ba880c187cc8f0b1e67f7822f36"}]

我的猜测是,函数没有等待Buffer.concat(chunks)完成。如何修复此问题?

covidcases
似乎没有
return
语句。但是您没有从
covidcases()返回任何内容。
当然,应该是
未定义的
。你期望的返回值是什么?@hackape我希望它返回body.toString(),但是如果我把return body.toString()放进去,它仍然是未定义的。你应该返回
req
,记住在大多数情况下使用
let
const
,而不是
var
。此外,我还将在函数外部定义所需的模块。您可能希望查看以下Q&A:。看起来您希望使异步函数同步。这是不可能发生的,但是有了Promises或
async
-
wait
,您可能会感觉更像这样。