ajax的promise封裝
阿新 • • 發佈:2019-01-14
ajax是一個比較常用的非同步操作,在Vue中或者其他框架的例項中如果使用$.ajax({})需要在success函式後面bind(this)或者var that=this,而且每次都要寫各個重複的引數或者程式碼,不想敘述了,直接上程式碼吧,很方便用
向外暴露一個方法:
export function getData(url,back) { return new Promise((resolve, reject) => { $.ajax({ url: url, type: 'post', dataType: 'jsonp', jsonpCallback:back, success(data) { resolve(data) }, error(err) { reject(err) } }) }) }
在元件中引入:
import { getData } from 'assets/js/ajax'
建議先在methods中定義方法:
_getData() {
getData(url, back).then((res) => {
console.log(res)
//操作資料
}).catch((err) => {
//返回promise中的reject
})
},
然後生命週期created中使用:
created(){ this._getData() }
最後,其實所有的可複用的方法都可以封裝起來,用盡量少的程式碼實現功能。
最最後,promise是非常強大的一個方法,很好用。