以异步方式设置函数参数

时间:2013-02-22 14:56:36

标签: javascript asynchronous

我有以下功能,我体验到函数启动有时会在没有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在外部调用。

1 个答案:

答案 0 :(得分:1)

这里没有异步(我没有encodeBase64的实现,但我不明白为什么它会异步)。

但是这不会将函数分配给任何名称,也不会调用它:

function(options) {
...
}

因此无法从我们看到的代码中调用launch

如果您想制作IIFE,请将其修改为

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

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

var name = options.name || self.setName();