gpt4 book ai didi

javascript - 在nodeJs中使用动态参数串联运行函数

转载 作者:搜寻专家 更新时间:2023-11-01 00:01:06 25 4
gpt4 key购买 nike

目标:(已解决:更新下面的工作代码)

  1. 创建一个 url 数组
  2. 创建一个接受单个 url 的函数,向该 url 发出请求,并将一些数据写入文件
  3. 为数组中的每个 url 连续多次运行上述函数。

Node 依赖:Request、Cheerio、async、fs

这是我目前所拥有的:

//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);

最佳答案

由于您希望 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);

关于javascript - 在nodeJs中使用动态参数串联运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32078800/

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