promise对象
promise是Es6新增的一个对象,目标是解决回调地狱的问题,promise对象就表示异步操作,可以把异步操作以同步操作的方式表示出来,promise有一个then方法,then有两个参数,一个是resolve一个是reject,resolve表示异步操作正确完成时执行的函数,reject表示异步操作不成功时执行的函数,
1、声明一个promise对象
let p = new Promise(function(resolve,reject){
});
2、then方法返回的是一个promise对象
let p = new Promise(function(resolve,reject){
});
p.then(function(){resolve},function(){reject});
3、案例
function fn3() {
console.log("fn3开始");
setTimeout(function () {
console.log("fn3异步操作完毕!");
}, 1000);
console.log("fn3结束");
}
fn3();
function fn2() {
return new Promise(function (resolve, reject) {
console.log("fn2开始");
setTimeout(function () {
console.log("fn2异步操作完毕!");
resolve();
}, 1000);
console.log("fn2结束");
});
}
fn2();
结果
用promise对象的then方法
function fn3() {
console.log("fn3开始");
setTimeout(function () {
console.log("fn3异步操作完毕!");
}, 1000);
console.log("fn3结束");
}
function fn2() {
return new Promise(function (resolve, reject) {
console.log("fn2开始");
setTimeout(function () {
console.log("fn2异步操作完毕!");
resolve();
}, 1000);
console.log("fn2结束");
});
}
function fn1() {
// Promise对象就表示一个异步操作。
let p1 = new Promise(function (resolve, reject) {
console.log("fn1开始");
setTimeout(function () {
console.log("fn1异步操作完毕!");
resolve();
}, 1000);
console.log("fn1结束");
});
return p1
}
// .then方法表示异步操作完成之后执行的操作
fn1().then(fn2).then(fn3)
结果:用了 promise.then方法之后将异步操作变成同步操作