1. Promise的含义

1.对象的状态不受外界影响

  • - 三种状态:
  • - pending (进行中)
  • - fulfilled (已成功)
  • -rejected (已失败)

2.一旦状态改变,就不会在变,任何时候都可以得到这个结果。

  • - 两种可能
  • - pending -> fulfilled
  • - pending -> rejected
  • 只要两种情况发生,状态就凝固了,不会再变了会一直报纸这种结果!

2. 基本用法

ES6规定,Promise是一个构造函数,用来生成Promise实例。

const promise = new Promiase(function(resolve,reject){
    //...somecode
    var a = 10;
    if(a){
        resolve(\'成功\')
    }else{
        reject(\'失败\')
    }
})

上面实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数

promise.then(function(value){
//success
    console.log(value)//->成功
},function(error){
//failure
    console.log(error)//->失败
})
  • - promise.then(函数1,函数2/可选)
  • - 函数1:function(resolve){};成功的值resolve
  • - 函数2:function(error){};失败的值 error
  • 也可以:
  • Promise.then(function(vlaue){}).catch(function(error){//捕捉错误})

一般来说,调用resolve或reject以后,Promise 的使命就完成了,后继操作应该放到then方法里面,而不应该直接写在resolve或reject的后面。所以,最好在它们前面加上return语句,这样就不会有意外。

new Promise((resolve, reject) => {
 return resolve(1);
 // 后面的语句不会执行
  console.log(2);
})
let state = 1;
function step1(resolve,reject){
    console.log(\'开始1\')
    if(state == 1){
        resolve(\'开始1完成\')
    }else{
        reject(\'开始1失败\')
    }
}
function step2(resolve,reject){
    console.log(\'开始2\')
    if(state == 1){
        resolve(\'开始2成功\')
    }else{
        reject(\'开始2失败\')
    }
}
    function step3(resolve,reject){
    console.log(\'开始3\')
    if(state == 1){
        resolve(\'开始3成功\')
    }else{
        reject(\'开始3失败\')
    }
}
//调用Promise
new promise(step1).then(function(val){
    console.log(val);
    return new Promise(stem2);
})
.then(function(val){
    console.log(val)
    return new Promise(stem3)
})
.then(function(val){
    console.log(val);
    return val;
})
.catch(function(error){
    console.log(error);
})

 

收藏 打印