基于nodejs多个html共享变量,Nodejs 异步代码变量共享的问题

也许题目说的还不是很明白,我就说一下我的需求吧

正在写一个爬虫类的NodeJs 程序,

由于有有防爬机制,所有请求需要带上cookie,通过cookie的值计算是sign值,才能正常返回数据, 问题是cookie会过期,如果cookie过期,请求返回失败,但是同时会返回新的cookie,

我的代码逻辑是这样的

class spider {

constructor(){

this.cookie = Cookie.getCookie() //返回Cookie

}

async getData(data){

let url = this.makeUrl(data) //组装url

const response = await request.get(url).setCookie(this.cookie)

if(response.json.sucess){

return reponse.josn //返回正确的数据,直接返回

} else {

//如果cookie 过期,更新cookie并重新请求一次

this.refreshcookie(response)

return this.getData

}

}

refreshcookie(response){

cookie.Update(response) //更据返回更新cookie

this.cookie = cookie.getCookie

}

}

const s = new spider()

async test(page){

const data = s.getData({page: page})

console.log(data

}

test(1)

如果请求一次,代码还是很正常的,如果cookie 程序自动更新cookie,重新请求返回了数据,最多请求2次就可以返回数据,

但是如果我有多个页面要取,

[1,2,3,4,5,6,7,8......100].forEach((page)=>{

test(page)

})

如果cookie无效的话,代码会产生200次请求,因为cookie是在异步代码中更新,所以,前100次请求,全是无效请求

我希望的效果是,如果第1个异步中发现了,cookie无效,直接更新所有的异步代码更新this.cookie的值,有没有好的办法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值