使用的内存太多

时间:2018-01-06 17:52:03

标签: reactjs

我向具有不同记录号的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>
    )
}    

1 个答案:

答案 0 :(得分:0)

我建议在服务器端处理所有这些逻辑。如果需要,按原样扩展此应用程序将非常困难。

不是从浏览器发出500个不同的请求,而是发出1个单一请求,只返回meaningful数据到客户端。

这将大大减少网络延迟,同时也减少内存消耗。