0

次の関数があり、params.nameを設定せずに関数launchが呼び出されることがあります。私は非同期関数にそれほど強くないので、これは、起動が呼び出される前にsetNameが必ずしも戻るとは限らないためである可能性があるのではないかと思います。そして、?の初期化で関数呼び出しをターナリ内に配置するのに役立ちますself.paramsか?

projectLaunch: function(options) {
  var self = this;
  if (options.name === null || options.name === "undefined") {
    var name = self.setName();
  } else { 
    var name = options.name;
  };

   self.params = {
     name: name
   };
  launch(self.params);
},

setName = function() {
  return encodeBase64(User.name, Project.name)
}

これはすべて大きなオブジェクトの一部であり、関数projectLaunchは外部から呼び出されます。

4

1 に答える 1

1

ここには非同期はありません(私はあなたの実装を持っていませんが、encodeBase64なぜそれが非同期になるのかわかりません)。

しかし、これは関数をどの名前にも割り当てず、呼び出しもしません:

function(options) {
...
}

したがってlaunch、表示されているコードから呼び出すことはできません。

IIFEを作成する場合は、次のように修正します。

(function(options) {
...
})({});

で空でない文字列を期待している場合options.name、渡された値または別の値を使用する最も簡単な解決策は次のとおりです。

var name = options.name || self.setName();
于 2013-02-22T14:58:57.423 に答える