1.Promise概念
promise是异步操作中的重要处理方式,它是一个构造函数,它的参数接收一个带有resolve和reject为参数的函数。promise有三种状态,分别是pending(等待)、resolve(成功)、reject(失败)。
2.Promise使用
function p() {
return new Promise( (resolve, reject) => {
resolve("成功");
})
}
首先写一个函数p,函数里返回了promise的一个新实例,promise里传递了resolve函数,并传递了‘成功’的值。
console.log(p()); // Promise { '成功' }
执行p函数,返回了一个带有‘成功’的promise
解析promise的值有两种方式
p().then( res => {
console.log(res); // 成功
}, err => {
console.log(err);
})
p().then( res => {
console.log(res); // 成功
}).catch( err => {
console.log(err);
})
以上代码的作用是相同的,通常我们使用第二种方式,这种方式更为清晰明了,promise.then()方法里接收两个参数,可以理解成一个是处理成功的回调函数,一个是处理失败的回调函数,回调函数的参数就是所传递过来的值。
console.log(
p().then( res => {
console.log(res);
}).catch( err => {
console.log(err);
})
);
输出
Promise { <pending> }
成功
这里因为promise是异步操作,所以会延迟执行,先执行最外层的console.log(),打印出一个正在等待状态的promise,在打印出resolve的值。
3.使用Promise.resolve()和Promise.reject()
使用promise.resolve()和promise.reject()可以直接创建出其状态的promise,修改p函数
function p() {
return Promise.resolve("成功")
}
p().then( res => {
console.log(res); // 成功
}).catch( err => {
console.log(err);
})
我们直接可以打印出p函数传递过来的值