-
promise是什麼?
promise表示一個異步操作結果的佔位符,表示未來的一個結果。 -
promise的生命週期
- pending 進行中,此時操作尚未完成,完成後會進入Fulfilled(成功完成)或者Rejected(程序錯誤)。成功完成之後,會進入settled狀態。promise的then方法可以對完成的結果進行處理。
let promise = new Promise((resolve,reject)=>{ setTimeout(()=>resolve(10),2000) }); promise.then(data=>console.log(data),err=>console.log(err)) // 2s後輸出10
- pending 進行中,此時操作尚未完成,完成後會進入Fulfilled(成功完成)或者Rejected(程序錯誤)。成功完成之後,會進入settled狀態。promise的then方法可以對完成的結果進行處理。
-
創建一個已完成的promise。
let resolvedPromise = Promise.resolve('resolved promise'); resolvedPromise.then(data=>console.log(data),err=>console.log(err)); //立即輸出 resolved promise let rejectedPromise = Promise.reject('err'); rejectedPromise.then(data=>console.log(data),err=>console.log(err));// 立即輸出err
-
通過thenable創建promise
let thenablePromise = Promise.resolve({then:(resolve,reject)=>resolve('thenable resolve')}); thenablePromise.then(data=>console.log(data)) // 立即輸出then...
-
catch
let promiseExc = new Promise((resolve,reject)=>{ setTimeout(()=>{try{throw new Error('some error')}catch(e){reject(e)}},2000) }); promiseExc.catch(e=>console.log(e)) // Error: some error
-
Promise.all(promises) ;響應多個promise
-
Promise.race();監聽多個promise,當其中一個完成時就相應。
-
用promise封裝一個簡單的ajax。
function HttpClient() { this.get = function (url) { return new Promise((resolve, reject) => { var request = new XMLHttpRequest(); request.open('get', url); request.send(); request.onreadystatechange = function () { request.readyState == 4 &&(request.status == '200' ? resolve(request.response) : reject(request.response)); } } ) } } var http = new HttpClient(); http.get("http://t.weather.sojson.com/api/weather/city/101030100").then(it => { console.log(it); http.get("http://t.weather.sojson.com/api/weather/city/101030100").then(it => { console.log(it) }).catch(err=>console.log(err)) }).catch(err=>console.log(err))
es6的promiss
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.