// Promise对象实例会接收两个参数:resolve、reject。
// 这两个参数本身就是函数,是由JavaScript提供的,开发人员不需要自行部署。
//这里实例化Promise对象的时候你可以理解为占位方法(假的方法,或者接口)没有具体实现的方法
// 这里 a>10模拟成功,其他认为失败了
function Promise_Test(a){
return new Promise((resovleInterface,rejectInterface)=>{
if(a>10){
resovleInterface('回调成功');
}else{
rejectInterface ('回调失败');
}
}
)};
//去实现接口方法了上面的
// resovleInterface:成功时候调用 res 就是resovleInterface的参数
// rejectInterface :失败的时候调用 reje 就是rejectInterface的参数
function resovleimplement(res){
console.log(res);
}
function rejectlement(reje){
console.log(reje);
}
// 调用Promise_Test返回Promise对象
//传个9模拟失败状态
Promise_Test(9).then(resovleimplement,rejectlement)
// 传个11模拟成功状态
Promise_Test(11).then(resovleimplement,rejectlement)
// *************************************
// 箭头函数简写,注意THEN接收两个函数,前面为成功函数,后面为失败函数
// 9失败,所以他会调用后面的函数
Promise_Test(9).then(null,(res)=>{
console.log('箭头函数:'+res)
})
// 11成功他会调用前面的函数,
Promise_Test(11).then((res)=>{
console.log('箭头函数:'+res)
})
以上脚本可以直接在谷歌浏览器-控制台运行(f12-Console)
最后发下文档说明
1、Promise对象的状态不受外界影响。
Promise对象有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也是Promise这个名字的由来,它翻译过来是“承诺”的意思,表示其他手段无法改变。
2、一旦状态改变,就不会再变,任何时候都可以得到这个结果。
Promise对象的状态改变,只有两种可能:
从pending变为fulfilled和从pending变为rejected,只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型);
如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同。事件的特点是,如果你错过了它,再去监听,是得不到结果的。
03
Promise参数
Promise对象实例会接收两个参数:resolve、reject。这两个参数本身就是函数,是由JavaScript提供的,开发人员不需要自行部署。
resolve函数的作用是将Promise对象的状态从“未完成”变为“成功”,在异步操作成功时调用,并将异步操作的结果作为参数传递出去。
reject函数则是将promise对象的状态由“未完成”变为“失败”,在异步操作失败时调用,并作为参数传递出去。
此外Promise对象除了这两个参数外,其实例对象还有还有两个方法供使用,即then()方法和catch()方法。then()方法是调用成功时的回调函数,catch()方法用于指定发生错误时的回调函数。
这里特别需要强调一下,then()方法返回的是一个Promise实例对象,因此可以采用链式调用,即then()方法后面再调用另一个then()方法。