首頁 >微信小程式 >微信開發 >微信小程式的wx.request與Promise的結合使用

微信小程式的wx.request與Promise的結合使用

php中世界最好的语言
php中世界最好的语言原創
2018-03-19 16:28:283628瀏覽

這次帶給大家微信小程式的wx.request 與Promise的結合使用,微信小程式的wx.request與Promise結合使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

在使用Promise,我的多次非同步程式碼通常是這樣的.

ajax(url, function (res){
    ajax(res.url, function(res) {
        ajax(res.url, function(res) {            if (res.status == '1') {
                ajax(res.url, function(res) {
                ...
                }
            }            else if (res.status == '2') {
                ajax(url2, function(res) {
                ...
            }
            ...
        }
    }
}
);

這種流程是很耗費心力並且脆弱的,體驗很糟糕,因此,在這次小程序的開發中為了更好的體驗,我開始使用了Promise.

代碼如下,這樣一來,當我們第二個請求需要第一個參數判斷時,可以不再陷入回調地獄,

// 小程序与后端情求接口
    let baseUrlPromise = 'https://xxx.com';    // 定义方法返回Promise参数,obj 为wx.request 方法中所需参数
    let req = function (obj) {      return new Promise(function (resolve, reject) {
        wx.request({
          url: baseUrlPromise + obj.url,
          data: obj.data,
          header: obj.header,
          method: obj.method == undefined ? "get" : obj.method,
          success: function (data) {            // 回调成功执行resolve            resolve(data)
          },
          fail: function (data) {            // 回调失败时
            if (typeof reject == 'function') {
              reject(data);
            } else {
              console.log(data);
            }
          },
        })
      })
    }    // 执行req 方法,传入第一个请求,
    let req1 = req({
      url: '第一次请求链接,与baseUrlPromise 相结合',
      data: {},
    })    // 当需要多次请求时加入
    req1.then(function (data) {
      console.log('promiseThen1')
      console.log(data);      return req({
        url: '第二次请求链接',
      })
    }).then(function (data) {
      console.log('promiseThen3')
      console.log(data);      return req({
        url:'第三次请求链接'
      })
   }).then(......).catch(function(data){
      console.log(PromiseCatch)
   })

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

Vue指令的使用

JS閉包的使用

以上是微信小程式的wx.request與Promise的結合使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn