简体   繁体   English

NodeJS,如何从请求调用返回值到主 function?

[英]NodeJS, how to return value from request call to main function?

I have the following code written.我编写了以下代码。 How do I return html from the request block when data is available into main viewPage function?当数据可用于主viewPage页面 function 时,如何从request块返回html

const request = require('request');

let viewPage = (url) => {
    request({url:url,headers:headers,method:'GET'},(error,response,html) => {
        let stockStatus = null;
        if(!error && response.statusCode == 200) {
           //...return html variable from here
        } else {

        }
      });

      return html
}

It returns empty/null when I call result = viewPage(URL) because data has not arrived yet.当我调用result = viewPage(URL)时它返回空/null,因为数据尚未到达。

API request call is async, you are not waiting for that to finish. API 请求调用是异步的,您无需等待它完成。

var rp = require("request-promise");

let viewPage = (url) => {
  return rp({ uri: url, headers: headers, method: "GET" })
    .then(function (html) {
      // Do something or check
      return html;
    })
    .catch(function (err) {
      console.log(err);
      return err;
    });
};

async function some() {
  var result = await viewPage(URL);
}

Similar result using Axios.使用 Axios 得到类似结果。

const axios = require('axios').default;

async function viewPage(url, headers = {}) {
    const response = await axios({
        method: 'get',
        url: url,
        headers: headers
    });
    return response?.data;
}

async function run() {
    const pageData = await viewPage("URL");
    return console.log(pageData);
}

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

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