2017年2月13日 星期一

(js)jquery.defferd用法

var mainObj;

        function job_1() {
            mainObj = runAsync_1();

            // deferred.then()
            mainObj.then(function(data) {
                alert(data);
            });
        }

        function job_2() {
            mainObj = runAsync_2();

            // deferred.promise().then()
            mainObj.then(function(data) {
                alert(data);
            });
        }

        function job_3() {
            mainObj = runAsync_2();

            // 平行處理多個 deferred
            $.when(mainObj).then(function(data) {
                alert(data);
            });

        }
        /* ================================================================== */
        /**
         * 返回 deferred
         */
        function runAsync_1() {
            var def = $.Deferred();
            //做一些異步操作
            setTimeout(function() {
                console.log('執行完成');
                def.resolve('隨便什麼數據');
            }, 2000);
            return def;
        };

        /**
         * 返回 deferred.promise()
         */
        function runAsync_2() {
            var def = $.Deferred();
            //做一些異步操作
            setTimeout(function() {
                console.log('執行完成');
                def.resolve('隨便什麼數據');
            }, 2000);
            return def.promise();
        };