function LazyMan(name){
console.log('This is ' + name, new Date());
var prePromise = Promise.resolve();
var pending = [Promise.resolve()];
var firstSleep = Promise.resolve();
return {
eat(food) {
// setTimeout(function(wait){
// Promise.all([wait, firstSleep]).then(function(){
// console.log('Eat:' + food, new Date());
// });
// }, 0, this.getPending())
var wait = this.getPending();
Promise.resolve().then(function(){
Promise.all([wait, firstSleep]).then(function(){
console.log('Eat:' + food, new Date());
});
})
return this;
},
sleepFirst(sec){
var newFirstSleep = new Promise(function(resolve){
firstSleep.then(function(){
setTimeout(function(){
console.log(' after first sleep ' + sec + ' seconds', new Date())
resolve()
}, sec * 1000);
})
})
firstSleep = newFirstSleep
return this;
},
sleep(sec){
var newPromise = new Promise(function(resolve){
prePromise.then(function(){
firstSleep.then(function(){
setTimeout(function(){
console.log('after sleep ' + sec + ' seconds', new Date())
resolve();
pending.splice(1, 1)
}, sec * 1000); //
})
});
});
pending.push(newPromise)
prePromise = newPromise;
return this;
},
getPending(){
return pending[pending.length - 1];
}
}
}
Created
July 16, 2019 15:11
-
-
Save mutongwu/e1c2e6d5c275e509949afea2f0a93e17 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment