我是 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);
});
它当前正在做的是:
- 将
_body
初始化为''
- 创建(但不执行!)
getHandler
- 开始请求
- 返回(仍然是空的)
_body
- 记录(空)
_body
- 稍后: 请求完成,调用
getHandler
getHandler()
更新_body
你需要做的是让fetchDepartments
接受回调函数,这样任何处理_body
的代码都可以等到请求完成。
关于javascript - Node .js `request.get` : store body in variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731544/