Node.js`request.get`:将主体存储在variables中

我是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仍然是一个空string。

如何从HTTP响应存储HTML?!?

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

请求不是同步的,所以你几乎可以肯定要定义一个callback。 在普通的JavaScript中,这将是:

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

目前正在做的是:

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

你需要做的是让fetchDepartments接受callback函数,这样任何代码进程_body可以等待请求完成。