2017年3月27日 星期一
(js)Pdeferred的用法之一(歪打正著,好威,老闆都要求我上班去),老闆屁都沒幫 fuck.....還是jq對岸威
// var $Deferred = require('../node_modules/$Deferred').$Deferred;
job_1();
/* ========================================================================== */
function job_1() {
var pd = Pdeferred.resolve();
pd = pd.then(function() {
console.log('job_1 start');
});
pd = pd.done(function() {
return job_1_1();
});
pd = pd.done(function() {
console.log('job_1 end');
});
return pd;
}
/* ========================================================================== */
// job_1 的子程序
/**
* 子流程是非同步
*
* 要等所有孩子都結束,才算結束
*/
function job_1_1() {
console.log('job_1_1 start');
var pd = Pdeferred.resolve('ts');
/* ====================================================================== */
// job_1_1 自己本身的 async_1
pd = pd.then(
function() {
var def = Pdeferred();
console.log('job_1_1 async_1 start');
setTimeout(function() {
console.log('job_1_1 async_1 end');
def.resolve();
}, 1000);
return def;
}
);
/* ====================================================================== */
// job_1_1 自己本身的 async_2
// 雖然寫法不同,但與 async_1 是相同意思
pd = pd.then(function() {
return Pdeferred(function(def) {
console.log('job_1_1 async_2 start');
setTimeout(function() {
console.log('job_1_1 async_2 end');
def.resolve();
}, 1000);
});
});
/* ====================================================================== */
pd = pd.then(function() {
// 子程序的非同步
return job_1_1_1();
});
pd = pd.then(function() {
// 子程序的非同步
return job_1_1_2();
});
pd = pd.then(function() {
console.log('job_1_1 end');
});
return pd;
}
/* ========================================================================== */
// job_1_1 的子程序
function job_1_1_1() {
var def = Pdeferred();
console.log('job_1_1_1 start');
setTimeout(function() {
console.log('job_1_1_1 end');
def.resolve();
}, 1000);
return def;
}
/* ========================================================================== */
// job_1_1 的子程序
function job_1_1_2() {
var def = Pdeferred();
console.log('job_1_1_2 start');
setTimeout(function() {
console.log('job_1_1_2 end');
def.resolve();
}, 1000);
return def;
}