微信小程序開發(十二)Promise將異步改為同步


// utils/utils.js

  /** 

  * requestPromise用於將wx.request改寫成Promise方式 

  * @param:{string} myUrl 接口地址 

  * @return: Promise實例對象 

  */ 

const requestPromise = myUrl => {
  // 返回一個Promise實例對象 
  return new Promise((resolve, reject) => {
    wx.request({
      url: myUrl,
      success: res => resolve(res)
    })
  })
}

module.exports = {
  requestPromise: requestPromise
}



// pages/test/test.js
// 導入util.js文件
const utilApi = require('../../utils/util.js')

Page({
  data: {
    myData: ''
  },
  // loadMyData函數用於打印myData的值 
  loadMyData() {
    console.log('獲取到的數據為:' + this.data.myData)
  },
  // 生命周期函數onload用於監聽頁面加載 
  onLoad: function() {
    utilApi.requestPromise('http://172.20.10.10:8080/wx?name=小明&oaid=xiaoming') 
  // 使用.then處理結果 
  .then(res => {
        console.log(res.data) 
        this.setData({
          myData: res.data
        })
        console.log(this.data.myData)
        this.loadMyData()
      }) 
}
})

當有多個異步請求時,直接不斷地.then(fn)去處理即可,邏輯清晰。

當然,這里只是寫了一個最簡單的Promise函數,還不完整。更完整的Promise化wx.request,等以后業務需要再完善吧。另外各種小程序開發框架也都有了現成的promise化API,拿來即用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM