双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

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

william607 william607 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
看看这段代码,在出现网络异常的时候进行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)
}
...全文

相关推荐

使用Promise链式调用解决多个异步回调的问题

主要给大家介绍了使用Promise链式调用解决多个异步回调问题的方法,文中给出了详细的介绍和示例代码,有需要的朋友可以参考借鉴,下面来一起学习学习吧。

weixin_38530115

解决Vue-Router升级导致的Uncaught (in promise)问题

在升级了Vue-Router版本到到3.1.0及以上之后,页面在跳转路由控制台会报Uncaught (in promise)的问题 这是什么原因呢? 看vue-router的版本更新日志 V3.1.0版本里面新增功能:push和replace方法会返回一个promise, 你可能在控制台看到未捕获的异常 解决方法一:在调用方法的时候用catch捕获异常 this.$router.replace({ name: 'foo' }).catch(err => { console.log('all good') }) 方法二: 对Router原型链上的push、replace方法进行重写,这

weixin_38530846

一个自动为promise注入catch语句的webpackloader

一个 promise catch loader,自动为你补齐 promise 的 catch 操作

weixin_39841856

js代码-promise调用3

js代码-promise调用3

weixin_38543460

Promise中then与catch区别[项目代码]

本文详细探讨了JavaScript中Promise的then方法的第二个参数与catch方法在处理异常时的区别。主要区别在于then的第二个参数只能捕获当前Promise被reject时抛出的错误以及前一个then中第一个参数同步抛出的错误,而catch方法可以捕获整个Promise链中任意位置的错误,包括前一个Promise的reject、前一个then/catch中同步或异步抛出的错误以及更早链式调用中未被处理的错误。通过多个示例验证了catch方法在错误处理上的优势,并建议统一使用catch处理错误,因其具有更清晰的错误处理流程、避免遗漏异步错误以及符合Promise链式调用的设计初衷。最后指出catch实际上是then的语法糖,但在实际应用中更为推荐使用。

Alpha
评论
收藏 已收藏
分享
返回顶部
william607
JavaScript 87,983 成员 224,680 内容