Promise究竟是个什么玩意呢?是一个类?对象?数组?函数?还是其他?
别猜了,我们还是直接打印出来看看吧,Promise它究竟是个什么玩意?
console.dir(Promise);
从打印的结果来看,我们可以看出什么了吧,Promise是一个函数,而且还是一个构造函数。
并且我们从打印的结果可以看出,Promise自身拥有all、finally、race、reject、resolve等几个比较眼熟的常用方法,而且原型(prototype)上也有catch、finally、then等同样眼熟的几个常用方法。
那么通过Promise new出来的对象是不是同样拥有这些方法的呢?没错,同样拥有!
那么既然这样,我们就通过Promise 来new出来一个对象吧。
let promise = new Promise(function(resolve, reject) {});
Promise构造函数它会接受一个函数来作为参数,这个函数会传入两个参数,分别是resolve和reject,这两个参数代表两个函数。即,resolve函数的作用是,将Promise对象的状态从"未完成"变为"成功",在异步操作成功时调用,并将异步操作的结果作为参数传递出去;reject函数的作用,将Promise对象的状态从"未完成"变为"失败",在异步操作失败时调用,并将异步操作报出的错误作为参数传递出去。
下面是一个Promise
对象的简单例子。
let promise = new Promise(function(resolve, reject) {
console.log('111');// 111
resolve();
});
promise.then(function() {
console.log('222');// 222
})
打印结果:
// 111
// 222
function getPromise() {
return new Promise(function(resolve, reject) {
console.log('111');// 111
resolve('异步操作成功');
})
}
getPromise().then(function(msg) {
console.log('222', msg);// 异步操作成功
})
打印结果:
// 111
// 异步操作成功