在回调函数之间共享数据

时间:2013-09-25 17:53:45

标签: javascript function callback

我有以下两个回调函数。我想知道是否有可能在clipname和has_clip函数之间共享名称对象?这是使用liveapi for ableton,但我确定它只是一般javascript的东西。

function loadclips() {

  names = new LiveAPI(this.patcher, 1, clipname, “live_set tracks 0 clip_slots 1 clip”);
  names.property = “name”;

  slot = new LiveAPI(this.patcher, 1, has_clip, “live_set tracks 0 clip_slots 1”);
  slot.property = “has_clip”;

}

function clipname(args) {
  post(args);
}

function has_clip(args) {
  post(args);
}

1 个答案:

答案 0 :(得分:1)

我认为最安全的做法是从loadClips返回一个对象(看起来也很合理)。确保对新变量使用varGlobal scope pollution可能会引入难以发现的错误。

function loadclips() {

  var names = new LiveAPI(this.patcher, 1, clipname, “live_set tracks 0 clip_slots 1 clip”);
  names.property = “name”;

  var slot = new LiveAPI(this.patcher, 1, has_clip, “live_set tracks 0 clip_slots 1”);
  slot.property = “has_clip”;

  return {
    names: names,
    slot: slot
  }; 

}

然后将其传递给任何可能需要它的函数。

function clipname(args, namesAndSlots) {
  // namesAndSlots is available here
  post(args);
}

function has_clip(args, namesAndSlots) {
  // namesAndSlots is available here
  post(args);
}

现在你可以调用loadClips:

var namesAndClips = loadClips(); 

var clip = clipName('a', namesAndClips); 

我认为这更接近你所需要的。