赞
踩
微信小程序默认是用同步请求的,但有些时候需要数据的同步请求,可使用的方法有很多,比较常用的有两种
1、 globalData 全局变量
app.js
- App({
- // 全局变量
- globalData: {
- currentPage: 1,
- allData: null,
- findData: null,
- },
- })
index.js
- // 获取应用实例
- const app = getApp();
- // 使用全局变量
- data = app.globalData.currentPage;
2、 引用第三方库 es6-promise
- var Promise = require('../plugins/es6-promise.js')
-
- function wxPromisify(fn) {
- return function (obj = {}) {
- return new Promise((resolve, reject) => {
- obj.success = function (res) {
- //成功
- resolve(res)
- }
- obj.fail = function (res) {
- //失败
- reject(res)
- }
- fn(obj)
- })
- }
- }
- //无论promise对象最后状态如何都会执行
- Promise.prototype.finally = function (callback) {
- let P = this.constructor;
- return this.then(
- value => P.resolve(callback()).then(() => value),
- reason => P.resolve(callback()).then(() => { throw reason })
- );
- };
- /**
- * 微信请求get方法
- * url
- * data 以对象的格式传入
- */
- function getRequest(url, data) {
- var getRequest = wxPromisify(wx.request)
- return getRequest({
- url: url,
- method: 'GET',
- data: data,
- header: {
- 'Content-Type': 'application/json'
- }
- })
- }
-
- /**
- * 微信请求post方法封装
- * url
- * data 以对象的格式传入
- */
- function postRequest(url, data) {
- var postRequest = wxPromisify(wx.request)
- return postRequest({
- url: url,
- method: 'POST',
- data: data,
- header: {
- "content-type": "application/x-www-form-urlencoded"
- },
- })
- }
-
- module.exports = {
- postRequest: postRequest,
- getRequest: getRequest
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。