简述:
构造,两个函数 包含一个参数,一个带有 resolve(解析)和 reject(拒绝)两个参数的回调
成功:resolve调用第一个函数
失败:reject调用第二个函数
then:处理调用结果,分别两个函数
promise.then(onFulfilled, onRejected)
promise.then(onFulfilled).catch(onRejected)
Promise 构造成一个异步回调操作
构造:
let k = 1;
const p = new Promise(function(resolve,reject)
{
console.log("begin",k++);
setTimeout(() => {
if(k < 2)
{
console.log("resolve",k++);
resolve(k);
}
else{
console.log("reject",k++);
reject(k);
}
},1);
console.log("Behind",k++);
});
p.then(
function(value){console.log("value",value++);},
function(err){console.log("err",err++);}
);
begin 1
Behind 2
reject 3
err 4
经典的链式回调
const p = new Promise(function(resolve,reject){
resolve(1);
}).then(function(value){ // 第一个then // 1
console.log(value);
return value * 2;
}).then(function(value){ // 第二个then // 2
console.log(value);
}).then(function(value){ // 第三个then // undefined
console.log(value);
return Promise.resolve('resolve');
}).then(function(value){ // 第四个then // resolve
console.log(value);
return Promise.reject('reject');
}).then(function(value){ // 第五个then //reject:reject
console.log('resolve:' + value);
}, function(err) {
console.log('reject:' + err);
});
1
2
undefined
resolve
reject:reject
const p = new Promise(function(resolve,reject)
{
reject("ABC");
});
p.then(function(value){console.log("AAA",value)}).catch(function(err){console.log("BBB",err)});
p.then(function(value){console.log("AAA",value)},function(err){console.log("BBB",err)});
BBB ABC
BBB ABC