查看: 45|回复: 0

[小程序] 微信小程序开发(十二)Promise将异步改为同步

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-1-1
发表于 2019-10-18 14:40:00 | 显示全部楼层 |阅读模式
// 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,拿来即用。



来源:https://www.cnblogs.com/aaronthon/p/11698201.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部