promise catch后重新调用 引起的内存泄露问题

william607 2016-03-08 03:22:55
看看这段代码,在出现网络异常的时候进行catch,并重新发起request请求,但是不知道为什么内存泄露了

var Promise = require('bluebird')
var request = Promise.promisify(require("request"));

this.getPageHtml = function(pageUrl) {

var tryGetPageHtml = function(pageUrl, options, totalTimes) {
return request.getAsync(options).spread(function(response, body) {
if (response.statusCode == 200)
return body
else throw new Error(response.statusCode)
}).catch(function(err) {
console.log('catch')
if (totalTimes == 0) {
return Promise.reject()
}
else {
totalTimes -= 1
return Promise.delay(200).then(function() {
return tryGetPageHtml(pageUrl, options, totalTimes)
})
}
})
}

//console.log(pageUrl)
var options = {
url: pageUrl,
followRedirect: true,
jar: this.auth.cookies, // 保存cookie
timeout: 4000,
headers: {},
}

var totalTimes = 10

return tryGetPageHtml(pageUrl, options, totalTimes).bind(this)
}
...全文
105 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧