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); });
目前正在做的是:
- 将
_body
初始化为''
- 创build(但不执行!)
getHandler
- 开始请求
- 返回(仍然是空的)
_body
- logging(空)
_body
- 稍后:请求完成,调用
getHandler
-
getHandler()
更新_body
你需要做的是让fetchDepartments
接受callback函数,这样任何代码进程_body
可以等待请求完成。