function timeout(delay=1000){
return new Promise((resolve,reject)=>{
setTimeout(resolve,delay);
})
}
timeout().then(()=>{
console.log(1);
return timeout(2000);
}).then(()=>{
console.log(2);
});
============================================================================================================================================================================================================
function interval(delay=1000,callback){
return new Promise((resolve,reject)=>{
let id = setInterval(()=>{
callback(id,resolve);
},delay)
})
}
interval(100,(id,resolve)=>{
let box = document.querySelector('#box');
let left = parseInt(window.getComputedStyle(box).left)
box.style.left = left + 10 + 'px';
if(left>=100){
clearInterval(id);
resolve(box)
}
}).then(oNode=>{
return interval(100,(id,resolve)=>{
let width = parseInt(window.getComputedStyle(oNode).width);
oNode.style.width = width-10 + 'px';
if(width<=20){
clearInterval(id);
resolve(box);
}
})
}).then(oNode=>{
interval(100,(id,resolve)=>{
let height = parseInt(window.getComputedStyle(oNode).height);
oNode.style.height = height - 10 + 'px';
if(height<=20){
clearInterval(id);
}
})
});