javascript - Node .js `request.get` : store body in variable

标签 javascript node.js http coffeescript

我是 Node.js 的新手,很抱歉这个问题可能很愚蠢......

这是我的代码:

#!/usr/bin/env coffee --bare

#   3rd party
request  = require('request')
request.defaults({'encoding': 'utf8'})

module.exports.fetchDepartments = fetchDepartments

fetchDepartments = (url) ->
    _body = ''

    getHandler = (error, response, body) -> 
        util.debug "HTTP response code: #{response.statusCode}"

        if error
            util.error error
        else    
            _body = body

    request.get(url, getHandler)
    _body

console.log fetchDepartments('https://ntst.umd.edu/soc/')

控制台正在打印对 util.debug() 的调用,但 _body 似乎仍然是一个空字符串。

…如何存储来自 HTTP 响应的 HTML?!?

最佳答案

您似乎在请求完成之前返回 _body

请求不是同步的,因此您几乎肯定会想要定义一个回调。在普通的 JavaScript 中,这将是:

fetchDepartments('https://ntst.umd.edu/soc', function (err, body) {
    console.log(body);
});

当前正在做的是:

  1. _body初始化为''
  2. 创建(但不执行!)getHandler
  3. 开始请求
  4. 返回(仍然是空的)_body
  5. 记录(空)_body
  6. 稍后: 请求完成,调用 getHandler
  7. getHandler() 更新 _body

你需要做的是让fetchDepartments接受回调函数,这样任何处理_body的代码都可以等到请求完成。

关于javascript - Node .js `request.get` : store body in variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731544/

相关文章:

javascript - 通过下拉菜单填充 Div

javascript - 延迟至满载

angular-in-memory-web-api 用于对象属性以外的查询参数

javascript - 在现有数组的中间插入一个数组。保持现有引用不变

javascript - HTML5 地理定位简单示例不起作用

node.js - 使用 Redis Cloud 和 Heroku 正确配置 Node session 存储

node.js - 只允许通过 nginx 和 docker 访问express app

node.js - Socket.io 命名空间和服务器不共享中间件?

javascript - 如何在 CoffeeScript 中执行 HTTP GET 以从 REST API 获取 JSON

c - 如何使用libcurl获取网页标题