2010年2月8日月曜日

まださまよっている。

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
x=2が行われた後、next()が積まれてx=1が実行され、そしてequals(x, 1)にいく。
test('bad use (3) of jsdeferred with qunit.', function(){
  var x = 0;
  Deferred.define();
  next(function(){
    x = 1;
  });
  equals(x, 0);
  x = 2;
  next(function(){
    equals(x, 1);
    start();
  });
  stop(100);
});

しかし、これはあまり自明じゃない。consoleにはpiyo hogeの順番で表示される。つまりstartが呼ばれてからx=1の代入が行われる。まったく好ましくない挙動。timerを消す必要があるかもしれない。
test('bad use (2) of jsdeferred with qunit.', function(){
  var x = 0;
  Deferred.define();
  next(function(){
    equals(x, 2);
    return next(function(){
      ok(true);
      x = 1;
      debug('hoge');
    });
  });
  equals(x, 0);
  x = 2;
  next(function(){
    equals(x, 2);
    debug('piyo');
    start();
  });
  stop(100);
});

0 件のコメント: