@Time 2018-5-17
1.回調(diào)函數(shù):
首先我知道的傳統(tǒng)異步編程中異步的解決方案只有回調(diào):
比如這樣: 這里的函數(shù)B是當(dāng)做一個參數(shù)放在了主函數(shù)A中题诵,當(dāng)調(diào)用A傳參B時梢睛,會先執(zhí)行A函數(shù)體中的console.log,然后延時3秒后輸出了“這里是回調(diào)函數(shù)”(報錯不用在意,因為沒打開編譯器伴箩,在瀏覽器上隨手寫了一下)
再例如回調(diào)函數(shù)含參的時候:
主函數(shù)A中進(jìn)行了加法計算,然后c值是在回調(diào)函數(shù)中alert出來的
//IIFE
(function(){
function A(a,b,callback){
c=a+b;
callback(c);
}
function B(para){
setTimeout(()=>{alert(c)},3000);
}
A(1,2,B);
}())
2.Promise
為了更好的解決"回調(diào)地獄"問題入愧,通俗的說也就是回調(diào)一層一層嵌套。Promise最早產(chǎn)生于一個社區(qū)赛蔫,最后被加入了ES6中砂客。
首先ES6規(guī)定泥张,Promise對象是一個構(gòu)造函數(shù)呵恢,專門用來生成promise實例,Promise構(gòu)造函數(shù)接收倆參數(shù)resolve媚创,reject渗钉,代表成功和失敗,執(zhí)行結(jié)束后回將異步操作的結(jié)果作為參數(shù)傳遞出去resolve(value) ,reject(error).
舉一個栗子:
function timeout(time){
const promise = new Promise((resolve,reject)=>{
setTimeout(resolve,time,'done')
});
return promise;
}
timeout(100).then((value)=>{
console.log(value);
},(error)=>{});
//這個error可以省略
這只是我的初步理解
具體想詳細(xì)理解可以看大佬的 http://es6.ruanyifeng.com/#docs/promise