Javascript 在nodeJs中使用动态参数串联运行函数
目标:(已解决:更新以下工作代码)Javascript 在nodeJs中使用动态参数串联运行函数,javascript,node.js,sync,cheerio,Javascript,Node.js,Sync,Cheerio,目标:(已解决:更新以下工作代码) 创建URL数组 创建一个函数,该函数接受单个url,向该url发出请求,并将一些数据写入文件 对数组中的每个url连续多次运行上述函数 节点依赖项:请求、IO、异步、fs 以下是我到目前为止的情况: //load dependencies var request = require("request"), cheerio = require("cheerio"), fs = require('fs'), async = require(
//load dependencies
var request = require("request"),
cheerio = require("cheerio"),
fs = require('fs'),
async = require('async'),
wstream = fs.createWriteStream('./model/data.txt');
//create url array
var arr = [];
for (var i = 0; i < 10; i++){
arr.push('http://www.test.com/' + i)
}
//function that gets data from url and creates write stream
function getUrlData(url, callback){
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
var data = $('h1').html();
wstream.write(data);
callback();
}
});
}
//close write stream
function endStream(){
wstream.end();
}
//updated working version
async.eachSeries(arr,getUrlData,endStream);
//加载依赖项
var请求=要求(“请求”),
cheerio=需要(“cheerio”),
fs=需要('fs'),
async=require('async'),
wstream=fs.createWriteStream('./model/data.txt');
//创建url数组
var-arr=[];
对于(变量i=0;i<10;i++){
arr.push('http://www.test.com/"(i)
}
//从url获取数据并创建写入流的函数
函数getUrlData(url,回调){
请求(url、函数(错误、响应、正文){
如果(!error&&response.statusCode==200){
var$=总负荷(车身);
var data=$('h1').html();
wstream.write(数据);
回调();
}
});
}
//关闭写入流
函数endStream(){
wstream.end();
}
//更新的工作版本
eachSeries(arr、getUrlData、endStream);
由于希望按顺序执行getUrlData,因此需要向getUrlData添加回调:
function getUrlData(url, callback){
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
var data = $('h1').html();
wstream.write(data);
callback();
}
callback(error);
});
}
然后使用每个系列:
async.eachSeries(arr, getUrlData, endStream);