promise解決回撥函式問題
阿新 • • 發佈:2018-10-31
回撥函式:就是將後續的邏輯傳入到當前要做的事情中,事情做好後呼叫此函式。
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);