何时通过回调实现 bluebird 库

When to implement bluebird library over callbacks

提问人:boredProjects 提问时间:6/21/2022 最后编辑:boredProjects 更新时间:6/22/2022 访问量:77

问:

这是我第一次构建一个全栈的 react 项目,所以任何帮助都会有所帮助。

从本质上讲,我正在构建一个端点,我真的很想每秒完成大约 200 个请求。现在在网上看,这似乎是一个非常合理的数字,但是由于这是我第一次这样做,我不确定这是否属实。

目前使用 settimeout(),我能够在大约 3 分钟内推送和解析 2000ish 请求或 3000 个请求。这很慢,每个声音大约有 10-20 个请求。如果我提出请求,但不用担心立即解决请求,那么我每秒可以处理大约 90 个请求。就速度而言,这仍然不是我需要的,我也希望它们能更快地得到解决。

所以我现在的问题是使用 bluebird 库会更好吗,因为它个人听起来要快得多。当我尝试发出大约 100k+ 的请求时,我遇到的另一个问题是我用完了净资源,我不确定如何释放任何资源或如何处理它。

以下是我的代码

const stepData = async() =>{
    try{
        const body = {record,testtime,current_ma,capacity_mah,specap_mah_g,voltage_v}
        assignToBody(body)

        const response = await fetch('http://localhost:5000/stepdata',{
                method:"POST",
                headers: {"Content-Type": "application/json"},
                body: JSON.stringify(body)
    })}catch(err){
        console.log(err.message)
        setTimeout(delayQue,5000)
        fail = true
        rate = rate + 5
        console.log(rate)
    }
    
}


const delayQue = () =>{

    if(count % 500 == 0 && count > 0 && !fail){
        setTimeout(delayQue,10000)
        assignVals(row)
        row++
        count++
    }
    else if(row < vals.length && !fail){
        setTimeout(delayQue,rate)
        assignVals(row)
        row++
        count++
    }else{
        fail = false
        setTimeout(function(){rate = rate - 5},30000)
    }

}

附加到 delayQue() 的函数,通过 setTimeOut() 调用。

    const assignVals = (row) =>{

    for(let i = 0; i < possibleCols.length;i++){
        if(cols.includes(possibleCols[i])){
            valsToPass[i] = vals[row][cols.lastIndexOf(possibleCols[i])]
        }else{
            valsToPass[i] = null;
        }
    }
    stepData()
}


const assignToBody = (body) =>{
    for(let i = 0; i < possibleCols.length; i++){
        if(cols.includes(possibleCols[i])){
            body[possibleCols[i]] = valsToPass[cols.lastIndexOf(possibleCols[i])]
        } 
    }
}
JavaScript ReactJS 蓝鸟

评论


答: 暂无答案