window.onload = function(){
        var o = {};
        Deferred.define(o);
        o.func = function(){alert(1); return this;}
        var print = function(a){
          alert(a)
        }
        Deferred.parallel([ // 配列かハッシュのどちらかで渡す
          /* 使い方 1 : Deferred.next を定義したオレオレオブジェクトを渡す */
          o.func()
          /* 使い方 2 : Deferred チェーンを渡す */
          ,Deferred.next( function(){ alert(2) } )
          ,Deferred.wait(1).next( function(){ alert(3) } )
          ,Deferred.call(print, 4)
          /* 使い方 3 : 新しい Deferred インスタンスを作ってそれを渡す */
          ,(function(){
            var d = new Deferred();
            setTimeout(function(){
              alert(5);
              d.call();  // ← ここで call することで遅延チェーンが繋がる
            },2000);
            return d;
          })()
        ])
        .next(function(){ // もちろん Deferred チェーンを繋げることができる。
          alert(6);
        });
      }
Deferred.parallel = function (dl) {
    if (arguments.length > 1) dl = Array.prototype.slice.call(arguments);
    var ret = new Deferred(), values = {}, num = 0;
    for (var i in dl) if (dl.hasOwnProperty(i)) (function (d, i) {
       
        if (typeof d == "function")d = next(d);
        d.next(function (v) {
            values[i] = v;
            if (--num 

相关文章: