我是node.js的新手,我想做的是编写一个机器人,每0.5秒获取一次市场价格并将它们存储在一个数组中。 IE。调用如下所示的内容,但所有这些都每 0.5 秒按顺序发生一次:
var events_req = https.request(options, function (res) {
var body = '';
res.setEncoding('utf-8');
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
if(p.parse(body)) {
for (var i in MarketPrices) {
eyes.inspect(MarketPrices[i]);
}
}
});
});
events_req.write(post_data);
events_req.end();
我该怎么做?
P.S.:不用担心
eyes.inspect
- 这只是为了调试目的,这样我就可以看到发生了什么。
定义执行您想要的操作的函数并使用 setInterval
function fetch() { .. /* make request here */ }
setInterval( fetch, 500 );
2023 年,我编写了 sync-request-curl,它有助于使用 libcurl 的 Easy 接口发送同步 HTTP 请求。
该库包含原始 sync-request 中功能的子集,但利用 node-libcurl 以获得更好的性能和 NodeJS 的附加 libcurl 选项。
这是 GET 请求的简单用法:
// import request from 'sync-request-curl';
const request = require('sync-request-curl');
const response = request('GET', 'https://ipinfo.io/json');
console.log('Status Code:', response.statusCode);
console.log('body:', response.body.toString());
console.log('json:', JSON.parse(response.body.toString()));
这是一个更接近您的用例的示例:
const request = require('sync-request-curl');
setInterval(() => {
const res = request(
'GET',
'https://your-api-url.com',
{
headers: {
// headers goes here
},
// Use "json" instead of qs for POST requests
qs: {
// query string parameters goes here
}
});
if (res.statusCode !== 200) {
// Handle non-200 status code
}
const body = res.body.toString('utf-8');
if (p.parse(body)) {
for (const item of MarketPrices) {
eyes.inspect(item);
}
}
}, 0.5 * 1000);
希望这有帮助:)。