与node.js我如何设置var从HTTP客户端响应
With node.js how to I set a var to response from HTTP client?
我知道这可能是异步Javascript 101,我在Kindle上确实有一些书可以参考,但我的设备不在附近。
我有一个节点应用程序与变量被分配给我正在加载的模块。该模块有一个函数,用于从URL下载数据字符串。
问题是,在请求返回之前,我如何不设置变量?
我的代码是这样的:
Downloader.js:
var http = require('http');
exports.downloadString = function(str) {
console.log("Downloading from " + str);
http.get(str, function(res) {
var data = [];
console.log("Got response: " + res.statusCode);
res.on('data', function (chunk) {
data.push(chunk);
});
res.on('end', function() {
return data.join('');
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
}
app.js:
var downloader = require('./lib/Downloader')
, dateParser = require('./lib/DateParser')
, eventIdGenerator = require('./lib/EventIdGenerator');
var report = downloader.downloadString("http://exampleapi.com");
console.log(report);
我需要等待,直到名为"report"的变量被填充。
显然,这意味着我的Mocha测试也失败了,因为我仍然不确定如何告诉测试等待,直到变量被填满。
我相信这是非常简单的,但我却一片空白!
谢谢!
Node.js(大部分)是异步的,所以你需要传递一个回调函数给你的模块:
Downloader.js:
var http = require('http');
exports.downloadString = function(str, callback) {
console.log("Downloading from " + str);
http.get(str, function(res) {
var data = [];
console.log("Got response: " + res.statusCode);
res.on('data', function (chunk) {
data.push(chunk);
});
res.on('end', function() {
callback(data.join(''));
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
};
app.js:
var downloader = require('./lib/Downloader')
, dateParser = require('./lib/DateParser')
, eventIdGenerator = require('./lib/EventIdGenerator');
downloader.downloadString("http://exampleapi.com", function(report) {
console.log(report);
});
相关文章:
- 控制台返回var不是't定义,但它是
- Meteor如何接收HTTP请求
- 从var向代码隐藏函数传递值
- 如何通过引用var Using DataTables来进行分页或排序
- jQuery语法添加了var
- 如何将具有文本类型值的var放入jQuery函数中
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 在我的情况下,如何进行http请求
- 当var==0时,我如何显示一个警报
- //而不是在src=“”上使用http://"属性
- 我无法使用angularJs($http)访问服务器
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 角度异步http自动完成
- 什么's本地node.js服务器和python简单http服务器之间的区别
- Update $scope var from http.get
- 与node.js我如何设置var从HTTP客户端响应
- 节点http.request():与var ClientRequest和callbackFn的关系
- 带require的双参数:var io = require('socket.io')(http);
- 这样做的目的是什么?Var HTTP = require(' HTTP ')