2014年4月23日 星期三

自我學習 - Deferred and setTimeout範例

ref : 必看
ref : 範例二
var wait = function(xx){
    var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
    
    var tasks = function(yy){
      console.log("tasks-xx="+xx);
          console.log("tasks-yy="+yy);
          this.value=11;
    };

    setTimeout(function(){
        var ss=new tasks(31);
        console.log("ss="+ss);
        console.log("jason="+JSON.stringify(ss));
        dtd.resolve(); //改變Deferred對象的執行狀態
    },1500);
    
  return dtd.promise(); // 返回promise对象
  };
function bbb()
{
  $.when(wait(15))
  .done(function(){ 
      console.log("done"); 
      })
  .fail(function(){ console.log("fail"); });
    
    console.log("run...");
}

bbb();
ref : 範例一 + 比較好懂
function sayIt(ms, def) {
    setTimeout(function() {
        console.log('middle');
        def.resolve();
        console.log('middle-2');
        return 10;
    }, ms);
}

function slowPromise() {
    var def = $.Deferred();
    var result = sayIt(2000, def);
    return def;
}

slowPromise().then(function() {
    console.log('end');
});

沒有留言:

張貼留言