1. 程式人生 > >promise解決回撥函式問題

promise解決回撥函式問題

回撥函式:就是將後續的邏輯傳入到當前要做的事情中,事情做好後呼叫此函式。

let a='';
function buy(callback){
     setTimeout(()=>{
         a='白菜';
         callback()
     },2000)
 }

 buy(function cook(){
     console.log(a);
 })

這種模式看起來非常噁心,不容易程式碼的維護,那麼promise的出現完美的解決了回撥問題。

promise解決回撥問題promise三個狀態(成功,失敗,等待)

resolve代表的是轉向成功態

reject代表的是轉向失敗態

resolve和reject均為函式

promise的例項有一個then方法,then方法中有兩個引數(兩個回撥函式)

let p=new Promise((resolve,reject)=>{
    setTimeout(()=>{
        let a='白菜';
        resolve(a);
    },2000)
});
p.then((data)=>{console.log(data)},()=>{})
function buyPack(){
     return new Promise((resolve,reject)=>{ 
         setTimeout(()=>{
             if(Math.random()>0.5){
                 resolve('買');
             }else{
                 reject('不買');
             }
         },100);
     });
 };
buyPack().then(function(data){   //成功的回撥
     console.log(data);
 },function(data){     //失敗的回撥
     console.log(data);