2012年6月12日火曜日

javascript task table 2

javascriptのタスク管理ですが
http://www.supernifty.com.au/blog/2011/07/17/javascript-task-queue-hack-it-9/
これでいいじゃないですか。
外人は助かるなー。まあ、人間がいた場合外人である確率の方が高いから当然かも知れません。
で、少しシンプルになりました。



  var task = function(func_, interval_) {
    return {
      func: func_ || null,
      interval: interval_ || -1
    }
  }

  var taskTable = function( table ) {
    var queue = queue || table;

    return {
      start: function( table ) {
        queue = queue || table;
        this.next();
      },
      next: function() {
        var self = this;
        var task = queue.shift();
       
        if(void 0 !== task)
        {
          if(task.func)
          {
            task.func();
            if(0<=task.interval)
            {
              setTimeout(function(){self.next();}, task.interval);
            }
          }
        }
      }
    }
  }

で使い方は


  var tasktable = taskTable([ 


          task( function(){alert('test1')},1000 ),
          task( function(){alert('test2'); tasktable.next(); } ),
          task( function(){alert('test3')})
        ]);
  tasktable .start();
もうグループを文字列で指定しなくていいんです。
完了コールバックとかの処理に応じて次に行く処理は
var tasktable = taskTable(
の場合
tasktable.next()
とします。
デフォルト引数で処理しているので
引用元のオリジナルと同じように
  var q = taskTable(),
        table = [.....];
  q.start(table);


ともかけます。





0 件のコメント:

コメントを投稿