1. 程式人生 > >ajax的promise封裝

ajax的promise封裝

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是非常強大的一個方法,很好用。