E企盈营销工具技术服务商 热线:4006-838-530

微信小程序异步转同步的实现

E企盈直播平台营销卖货系统

一、参考文档https://blog.csdn.net/Cpath/article/details/79525893二、login等原生方法转同步(1)引入库bluebird.js 文件地址 https://cdn.jsdelivr.net/bluebird/latest/bluebird.min.js(2)util.jsvar Promise = require(‘bluebird.js’)  //我用了bluebird.js 文件地址  https://cdn.jsdelivr.net/bluebird/latest/bluebird.min.jsfunction wxPromisify(fn) {  return function (obj = {}) {    return new Promise((resolve, reject) = {      obj.success = function (res) {        resolve(res)      }      obj.fail = function (res) {        reject(res)      }      fn(obj)    })  }}module.exports = {  wxPromisify: wxPromisify}(3)、使用方法index.js中var util = require(‘../../utils/util.js’);onLoad: function (options) {  var that = this;  uid = wx.getStorageSync(‘user_id’);  if (uid == ”) {   # 注意:wxPromisify括号中的方法不需要加括号直接wx.login, wxPromisify括号中的方法,我试了试自己定义的方法好像不可以,所以现在我用的是微信自带的方法。我的业务中暂时也只有授权用到同步………………    var wxLogin = util.wxPromisify(wx.login);        wxLogin().then(function (res) {      var data = {        code: res.code      };      api._post(api.HOST_URI + ‘appletsys/getUserOpenId’, data, function (res) {        wx.setStorageSync(‘openid’, res.data.data.openid);        wx.setStorageSync(‘token’, res.data.data.token);      })    }).catch(function (res) {      wx.showToast({        title: ‘登录失败!’,        icon: ‘loading’,        duration: 1000      })}) 三、get post的转同步,包含第二种实现方法,简化版本(1)util.jsconst app = getApp();const headerConfig = {  “Content-Type”: “application/json”,}const baseUrl = “https://www.clockone.xyz/”;export function wxPromise(fn) {  return function (obj = {}) {    return new Promise((resolve, reject) = {      obj.success = res = {        resolve(res)      };      obj.fail = res = {        reject(res)      };      fn(obj)    })  }}// 这是对post请求的封装export function post(url, data = {}) {  return new Promise((resolve, reject) = {    //网络请求    wx.request({      url: baseUrl + url,      data,      method: ‘POST’,      header: headerConfig,      success: function (res) {//服务器返回数据        resolve(res);      },      fail: function (error) {        reject(error);      }    })  });}// 这是对get请求的封装export function get(url, data = {}) {  return new Promise((resolve, reject) = {    //网络请求    wx.request({      url: baseUrl + url,      data,      method: ‘GET’,      header: headerConfig,      success: function (res) {//服务器返回数据        resolve(res);      },      fail: function (error) {        reject(error);      }    })  });}(2)、使用 index.jsimport { get, wxPromise } from “utils”;getOpenID:function(){    wxPromise(wx.login)()    .then(res = get(“/onReceiveCode”, { code: res.code }))    .then(res ={      console.log(res.data);      wx.setStorageSync(“openID”, res.data)    })  }, //也可以在1个then中的最后一行,使用return 调用下一个方法  get(“onQueryTask”, { “openID”: openID})    .then(res ={    })

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序异步转同步的实现
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏