【问题标题】:NodeJS, how to return value from request call to main function?NodeJS,如何从请求调用返回值到主函数?
【发布时间】:2022-01-26 10:16:58
【问题描述】:

我编写了以下代码。当数据可用于主 viewPage 函数时,如何从 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
}

当我调用result = viewPage(URL) 时它返回空/null,因为数据尚未到达。

【问题讨论】:

    标签: node.js request


    【解决方案1】:

    使用 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);
    }
    

    【讨论】:

      【解决方案2】:

      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);
      }
      

      【讨论】:

      • 它有效,但我刚刚检查它是一个折旧的包。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 2013-03-28
      • 2021-11-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多