我知道这可能是异步JavaScript 101,我确实有一些关于Kindle的书籍,我可以咨询一下,但是我并不在我的设备附近。使用node.js如何将var设置为HTTP客户端的响应?
我有一个节点应用程序,其变量被分配给我加载的模块。该模块有一个功能可以从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);
我需要等待填充名为 “报告” 的变量,直到。
显然这意味着我的摩卡测试也失败了,因为我仍然不确定如何告诉测试等待变量填充。
我相信这是非常简单的,但我画空白!
谢谢!
您不能从AJAX呼叫返回。它是异步的。您需要在回调中执行您的操作(或传递回调函数)。 –