如何使用 node.js 按指定顺序收集 URL 的内容
How to collect the content of URLs in a specified sequence using node.js
我想从 3 个不同的 URL 收集内容,并将其打印到 stdout。内容必须按照提供URL的顺序打印,即process.argv[2] = URL1,process.argv[3] = URL2等。我认为如果我使用一系列嵌套回调,这将起作用,但相反,正在发生的事情是第二个 URL 的某些内容在第一个 URL 之前开始打印(每次都会根据加载页面所需的时间而变化,但它永远不会同步) - 如何对此进行编码,以便仅在第一个 URL 完全完成后打印第二个 URL等。。。这是我的代码:
var http = require('http');
var webpage1 = process.argv[2];
var webpage2 = process.argv[3];
var webpage3 = process.argv[4];
container(callback1, callback2, callback3);
function container(callback1, callback2, callback3) {
callback1(callback2, callback3);
}
function callback1(callback2, callback3) {
http.get(webpage1, function (response) {
var body1 = [];
response.on('data', function (chunk) {
body1.push(chunk);
}).on('end', function () {
body1 = Buffer.concat(body1).toString();
console.log(body1);
});
});
callback2(callback3);
}
function callback2(callback3) {
http.get(webpage2, function cb(response) {
var body2 = [];
response.on('data', function (chunk) {
body2.push(chunk);
}).on('end', function () {
body2 = Buffer.concat(body2).toString();
console.log(body2);
});
});
callback3();
}
function callback3() {
http.get(webpage3, function cb(response) {
var body3 = [];
response.on('data', function (chunk) {
body3.push(chunk);
}).on('end', function () {
body3 = Buffer.concat(body3).toString();
console.log(body3);
});
});
}
你不需要写3次相同的代码。另外,这里不需要使用回调。
var http = require('http');
var numOfURLs = 3;
(function printURL(a){
http.get(process.argv[a + 2], function (response) {
var body = [];
response.on('data', function (chunk) {
body.push(chunk);
}).on('end', function () {
body = Buffer.concat(body).toString();
console.log(body);
if(a < numOfURLs - 1) printURL(a + 1);
});
});
})(0);
相关文章:
- 我如何向这个脚本添加一个点击按钮循环URL函数(按给定顺序在URL之间切换),或者这可能吗
- Angular,ui路由器;绑定”;到url,也不刷新
- AngularJs一次绑定和布尔运算符的值顺序
- Javascript数据将元素属性绑定到URL中的锚href
- Javascript中绑定到事件的函数的执行顺序
- 角度.js指令模板 URL 无法绑定范围
- 使量角器按顺序路由到不同的 URL
- 尝试将JS绑定到html图像url - 使用WP主题定制器API
- 在点击此链接后,获取绑定到锚链接的 onclick 函数内的 URL/锚点
- Knockoutjs:同时使用单击和选中绑定时绑定评估的顺序
- 当URL通过HTML更改时,带有jQuery密钥绑定的AngularJS指令未正确加载绑定
- 具有数据绑定URL的ExtJS存储未重新评估数据属性
- 以不正确的顺序从绑定中删除2.0参数
- 用于在Facebook、Twitter等网站上共享URL的锚定标签
- 可以Promise按顺序加载多个url
- Javascript Regex将$.param返回的url字符串强制转换为MVC模型绑定约定
- 敲除绑定顺序/不带可观察性
- Jquery,绑定顺序/等待回调
- 按不同顺序绑定参数
- jQuery如何设置绑定顺序