gpt4 book ai didi

javascript - 使用 Node.js 如何设置 var 来响应 HTTP 客户端?

转载 作者:行者123 更新时间:2023-11-28 20:28:43 26 4
gpt4 key购买 nike

我知道这可能是 Asynchronous Javascript 101,而且我确实有一些关于 Kindle 的书籍可以查阅,但我离我的设备还很远。

我有一个 Node 应用程序,其中的变量被分配给我正在加载的模块。该模块有一个函数,可以从 URL 下载一串数据。

问题是,如何在请求返回之前不设置变量?

我的代码如下所示:

下载器.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(大部分)是异步的,因此您需要将回调函数传递给您的模块:

下载器.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);
});

关于javascript - 使用 Node.js 如何设置 var 来响应 HTTP 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com