如何将respone存储到变量node.js请求模块中

问题描述

我正在尝试存储通过请求模块使用nodejs发出的http请求的响应,但是问题是请求完成后我们无法再访问它,我们可以在回调之后说

如何添加

这是我到目前为止尝试过的

试图使用var而不是let 试图将其传递给函数,以便以后可以使用,但没有运气

这是我的代码,任何人都可以帮上NodeJS的新手,这就是为什么一个菜鸟问题

var request = require('request')
var response

  function sort(body) {
    for (var i = 0; i < body.length; i++) {
      body[i] = body[i].replace("\r","");
    }
      response = body
      return response
  }

  request.get(
    "https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=10000&country=all&ssl=all&anonymity=all",(err,res,body) => {
      if (err) {
        return console.log(err);
      }
      body = body.split("\n");
      sort(body);
    }
  );

console.log(response)

在这种情况下,我要从此api获取代理,并尝试将它们存储在称为response的变量中

解决方法

var request = require("request");
var response;

async function sort(body) {
  await body.split("\n");
  response = await body;
  console.log(response); // this console log show you after function process is done. 
  return response;
}

request.get(
  "https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=10000&country=all&ssl=all&anonymity=all",(err,res,body) => {
    if (err) {
      return console.log(err);
    }

    sort(body);
  }
);

// console.log(response); //This console log runs before the function still on process,so that's why it gives you undefined.
  • 尝试使用此代码,我刚刚测试过就可以正常工作。
  • 将控制台日志放入功能内,以便您查看结果。
  • 您放置的console.log实际上在处理数据之前运行,因此这就是为什么“未定义”的原因。
  • 实际上,排序函数完成处理后,您将获得数据。