es6的Promise(承诺)
Promise中的所有回调函数,都是异步执行的
//用来解决异步的一些问题
let p = new Promise(function(resolve,refused){
console.log("abc");
//resolve();
setTimeout(function(){
resolve();
},3000);
console.log("123");
});
p.then(function(){
console.log("def");
});
//挂起状态 成功状态 失败状态
setTimeout(function(){
console.log(1);
setTimeout(function(){
console.log(2);
setTimeout(function(){
console.log(3);
setTimeout(function(){
console.log(4);
setTimeout(function(){
console.log(6);
},5000);
},3000);
},3000);
},2000);
},1000);
function sleep(times){
return new Promise(function(resolve,refused){
setTimeout(function(){
resolve();
},times);
});
}
let pr = new Promise(function(resolve,refused){
setTimeout(function(){
resolve();
},1000);
});
pr.then(function(){
console.log(1);
return sleep(2000);
}).then(function(){
console.log(2);
return sleep(3000);
}).then(function(){
console.log(3);
return sleep(4000);
}).then(function(){
console.log(4);
});
let p3 = new Promise(function(resolve,refused){
resolve();
refused("失败了");
});
p3.then(function(){
console.log("edf");
}).catch(function(e){
console.log(e);
});
ES6 对 Promise 有了原生的支持,一个 Promise 是一个等待被异步执行的对象,当它执行完成后,其状态会变成 resolved 或者 rejected。
每一个 Promise 都有一个 .then 方法,这个方法接受两个参数,第一个是处理 resolved 状态的回调,一个是处理 rejected 状态的回调