promise是異步操做的一種解決方案,簡單來講,就是一個容器裏面保存着某個將來纔會結束的事件(異步操做)。promise
promise特色:(1)、promise三種狀態:pending(進行中),fulfilled(已成功),rejected(已失敗)。(2)、resolved(已定型)異步
promise缺點:(1)、一旦新建就會馬上執行,沒法中途取消。(2)、不設置回調函數,promise內部拋出的錯誤,不會反映到外部。(3)、處於pending狀態時候,就是不知道目前進展到哪一個階段(剛剛開始仍是即將完成)。函數
promise基本用法:對象
promise對象是個構造函數,用來生成promise實例。事件
const promise = new Promise(function(resolve,reject){回調函數
if("異步執行成功"){同步
resolve(value)io
}else{console
reject(error)function
}
})
promise.then(function(value){
},function(error){
})
promise對象的簡單例子:
function timeout(ms){
return new Promise((resolve,reject)=>{
setTimeout(resolve,ms,'done');
})
}
timeout(100).then((value)=>{
console.log(value)
})
上面代碼中,timeout返回一個promise實例,表示一段時間後纔會發生的結果。過了指定時間,promise實例的狀態變爲resolved.就會觸發then方法綁定的回調函數。
promise新建後就會當即執行:
let promise = new Promise(function(resolve,reject){
console.log('promise')
resolve()
})
promise.then(function(){
console.log('resolved')
})
console.log('hu')
promise新建後就會當即執行,因此首先輸出的是promise,而後,then方法指定的回調函數,將在當前腳本全部同步任務執行完成之後纔會執行,因此resolved最後輸出。