function Say(name){
return new Promise(function(resolve, reject){
switch(name){
case 'a':
setTimeout(function(){
console.log(name);
resolve();
}, 3000);
break ;
case 'b':
setTimeout(function(){
console.log(name);
resolve();
}, 2000);
break ;
case 'c':
setTimeout(function(){
console.log(name);
resolve();
}, 1000);
break ;
case 'd':
console.log(name);
resolve();
break ;
}
});
}
Say('a')
.then(function(){return Say('b')})
.then(function(){return Say('c')})
.then(function(){return Say('d')})