0

我有以下函数,我体验到函数启动有时在没有设置 params.name 的情况下被调用。我在异步函数方面不是那么强,所以我想知道这是否可能是因为 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) {
...
})({});

如果您期望 in 中的非空字符串options.name,使用传递的值或另一个值的最简单解决方案是:

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