0

我一直在阅读 Javascript 闭包和作用域链,但我还没有看到任何关于从作用域链中操作变量的内容。这是我遇到的类似情况:

function first() {
  var a = [];
  a.push({firstFunction: 'yes'});

  doSomethingFunction(valueToPassIn, function() {
    a.push({secondFunction: 'yes'});

    doAnotherThingFunction(newValueToPassIn, function() {
      a.push({thirdFunction: 'yes'});
    })
  })

  console.log(a) //returns {firstFunction: 'yes'}
}

我怎样才能让它返回{firstFunction: 'yes', secondFunction: 'yes', thirdFunction: 'yes'}

代码可能有语法错误,但这是我试图理解的想法。我只是即时编写了这段代码,所以你们可以看到与我要修复的内容类似的场景。

谢谢

4

1 回答 1

1

我知道评论中已经回答了这个问题,但这里有一个使用回调的例子。

function first(callback) {
  var a = [];
  a.push({firstFunction: 'yes'});

  doSomethingFunction(valueToPassIn, function() {
    a.push({secondFunction: 'yes'});

    doAnotherThingFunction(newValueToPassIn, function() {
      a.push({thirdFunction: 'yes'});
      callback(a);
    });

  });
}

first(function(a){ console.log(a); });

这种方法的唯一问题是当你有超过 3 或 4 个嵌套回调函数时,它会变得不守规矩。承诺是处理它的方法。

jsfiddle:http: //jsfiddle.net/axqmvdxg/

于 2014-08-26T18:19:04.597 回答