javascript延遲物件

來源:互聯網
上載者:User

標籤:return   als   java   function   1.5   否則   utf-8   狀態   add   

1、類比任務隊列:
function taskQueue() {    var taskList = [];    var isRun = false;         this.addTask = function (task) {        task.status = ‘waiting‘;        taskList.push(task);    };     function run(task) {        if (!task.validate()) {            task.status = ‘invalidate‘;            isRun = false;            return;        }        function endWrap() {            if(task.end) task.end.apply(task,arguments);            task.status = ‘done‘;            isRun = false;        };        task.status = ‘running‘;        if (task.isAsyn) {            if(task.begin) task.begin();            task.run(endWrap);        }        else {            if(task.begin) task.begin();            task.result = task.run();            endWrap();        }    }     setInterval(function () {        if (taskList.length > 0 && !isRun) {            isRun = true;            run(taskList.shift());        }    }, 100);}

task增加一個validate方法,用於檢測此時是否有必要再執行先前已入隊列的任務。task增加了begin的方法,這是供該task被執行時可以被回調,增加了result屬性,如果是同步的task,被執行時可以得到傳回值。如果是非同步endWarp作為callback傳入。至於異常,只能task自己去保證不會拋出異常,否則這個隊列會一直阻塞。

2、在jquery 1.5 版本之後,ajax請求的內部實現被重寫。$.ajax方法返回的不再是一個jqXHR對象,而是一個Deferred對象。可以使用$.Deferred對象的api進行一些非同步作業。 主要包括 .done.fail.then,.pipe$.when方法。
var fetchData = function (url) {    return $.ajax({        type: ‘get‘,        url: url    });}fetchData()        //執行函數返回一個Deferred對象執行個體    .done()        //接受一個函數,ajax請求成功調用    .fail()        //接受一個函數,ajax請求失敗調用    .done()        //第二個成功狀態的回調方法    .fail()

 

 

 

javascript延遲物件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.