我向具有不同记录号的API发出超过500个请求,检查响应是否有意义,如果是,则将该记录号添加到保持状态的数组中。我的问题是内存..只要将7个记录号添加到数组中,我就会在chrome中获得net :: ERR_INSUFFICIENT_RESOURCES错误。 RAM使用率跃升至2GB。为什么会发生这种情况?
代码:
render(){
this.state.records.map(record => {
axios.get(`https://*some url*code=${record.A}&exactMatch=true`)
.then(response => {
if(response.data.mResponseData.filter.brand.length !== 73){
this.setState({
validCount: this.state.validCount+1,
valid: [...this.state.valid, record.A],
checked: this.state.checked+1
})
}
}).catch(err => {
console.log(err)
this.setState({
errorsCount: this.state.errorsCount+1,
errors: [...this.state.errors, record.A],
checked: this.state.checked+1
})
})
})
return(
<div>
<h1>Valid count</h1>
<p>{this.state.validCount}</p>
<h1>Valids</h1>
<ul>{this.state.valid.map(valid => {
return(<li key={valid}>{valid}</li>);
})}</ul>
<h1>Errors count</h1>
<p>{this.state.errorsCount}</p>
<h1>Errors</h1>
<ul>{this.state.errors.map(err => {
return(<li key={err}>{err}</li>);
})}</ul>
</div>
)
}
答案 0 :(得分:0)
我建议在服务器端处理所有这些逻辑。如果需要,按原样扩展此应用程序将非常困难。
不是从浏览器发出500个不同的请求,而是发出1个单一请求,只返回meaningful
数据到客户端。
这将大大减少网络延迟,同时也减少内存消耗。