这是在旧版本节点中避免回调地狱的可接受方法吗?

Is this an acceptable method of avoiding callback hell in old versions of node?

没有承诺,没有异步等我想知道这种模式是否可以接受 - 我的函数被调用并且我收到了一个回调。我需要做两件事才能回电:

function doSomething(..args.., callbackThatNeeds1And2DoneFirst){

    var done1 = false;
    var res1 = someAsync1(function call1callback(){ 
      //blah
      done1 = true;

      maybeComplete();
    });

    var done2 = false;
    var res2 = someAsync2(function call2callback(){ 
      //blah
      done2 = true;

      maybeComplete();
    });

    function maybeComplete(){
      if(done1 && done2){
        callbackThatNeeds1And2DoneFirst();
      }
    }

}

我想问题是关于变量范围的——多个 "concurrent" 执行是否会干扰彼此的 done1 和 done2 值,或者每个调用是否有自己的变量范围?

是的,这个模式很好。它基本上做了 Promise.all 今天所做的事情,只是它只适用于两个异步回调,而不是可变数量。

Can multiple "concurrent" executions interfere with each other's values for done1 and done2, or does each call get its own variable scope?

每次调用 doSomething 都会创建一个包含新 done1done2 变量的新作用域。