陷入节点js的回调地狱

时间:2017-09-14 13:28:25

标签: javascript node.js callback

我正在尝试修改此节点库以添加额外的存在方法

这是图书馆的链接 - https://github.com/mikolalysenko/interval-tree-1d/blob/master/interval-tree.js

这就是我创建的

proto.queryPointExists = function(x, cb) {
    if(x < this.mid) {
      if(this.left) {
        var r = this.left.queryPointExists(x, cb)
        if(r) { return r }
      }
      return reportLeftRangeExists(this.leftPoints, x, cb)
    } else if(x > this.mid) {
      if(this.right) {
        var r = this.right.queryPointExists(x, cb)
        if(r) { return r }
      }
      //console.log(reportRightRangeExists(this.rightPoints, x, cb));
      return reportRightRangeExists(this.rightPoints, x, cb)
    } else {
      return reportRangeExists(this.leftPoints, cb)
    }
  }

  function reportLeftRangeExists(arr, hi, cb) {
    for(var i=0; i<arr.length && arr[i][0] <= hi; ++i) {
      var r = cb(arr[i])
      if(r) { return r }
    }
  }

  function reportRightRangeExists(arr, lo, cb) {  
    for(var i=arr.length-1; i>=0 ; --i) {
      if(arr[i][1] >= lo){
        var r = cb(arr[i])
        if(r) { return r }
      } else {
        return false;
      } 
    }
  }

  function reportRangeExists(arr, cb) {
    for(var i=0; i<arr.length; ++i) {
      var r = cb(arr[i])
      if(r) { return r }
    }
  }

tproto.queryPointExists = function(p, cb) {
    console.log("Here");
    if(this.root) {
      //console.log(this.root.queryPointExists(p, cb)+"ss");  
      return this.root.queryPointExists(p, cb);
    }
  }

问题是回调风很紧,我想要实现的是,如果任何间隔与查询点匹配,它应该返回true并立即退出。但是由于疯狂的递归回调,我被困住了,它永远不会达到顶峰。

请帮忙

0 个答案:

没有答案