Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

请教各位这段代码有没有问题,该如何写

$
0
0

需求是:根据目标积分从redis有序集合里取出一定数量低于给定积分的数据,假如给定积分是1000分,每次递减100分,那么就先取1000-900之间的数据。假如要求取20条,如果第一次没取够,则再减100,即第二次就取1000-800之间的,以此类推,直到取够20条或积分减到0则停止取。 我现在实现的代码如下,但是代码好像有问题,因为更新该代码后服务器的CPU一直高居不下。目前还在测试是不是该段代码导致的。 大家帮忙看看,代码是不是有问题,或者这样的逻辑应该怎么写

var getEnemy = function (score, key, temp_min) {
    var max = score,
        min = score - 100;
    if (!isEmpty(temp_min)) min = temp_min;
    if (min < 0) min = 0;
    return cache.zrevrangebyscore(key, max, min)
        .then(function (val) {
            //未取够20条且还未到最低分数,扩大范围继续取
            if(val.length<20&&min>0){
                min-=100;
                return getEnemy(score, key, min);
            } else return val;
        });
};

var isEmpty = function (obj) {
    return (obj == null || typeof obj == "undefined" || obj.length == 0)
};

Viewing all articles
Browse latest Browse all 14821

Trending Articles