1.验证:Promise的本质是一个构造函数
var p = new Promise(function(resolve, reject) {
setTimeout(() => {
resolve("hello!!");
}, 1000);
});
p.then(res => {
console.log("成功的回调:", res);
});
p.catch(data => {
console.log("失败的回调:", data);
});
// 验证:p是实例,Promise是构造函数,then()和catch()是写在原型上的方法
console.log(p.__proto__ == Promise.prototype);//true
2.Promise的原型上绑定的属性和方法
2.1.Promise的原型上绑定的属性constructor指向new Promise出来的实例
var p = new Promise(function(resolve, reject) {
resolve("hello!!");
});
p.then(res => {
console.log("成功的回调:", res);
});
p.catch(data => {
console.log("失败的回调:", data);
});
// 验证:p是实例,Promise是构造函数,then()和catch()是写在原型上的方法
console.log(p.__proto__ == Promise.prototype);
console.log(Promise.prototype.constructor == p);
2.2.Promise的原型上绑定的方法then
语法
Promise.prototype.then(onFulfilled,onRejected)
其中,
onFulfilled是Promise变成fulfilled状态时调用的函数
onRejected是Promise变成rejected状态时调用的函数,这个rejected函数有一个reason参数,即"被拒绝的原因(rejection reason)",如果reason参数不是函数则会在内部替换成一个"thrower"函数
说明
添加解决(fufillment)到拒绝(rejection)的回调到当前Promise,返回一个新的Promise
示例
var p=new Promise((resolve,reject)=>{
resolve("ok!!!");//接受
//reject(new Er