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 に答える