美文网首页微信小程序前端之美-小程序
用Promise实现小程序接口链式调用

用Promise实现小程序接口链式调用

作者: 极乐叔 | 来源:发表于2018-10-15 11:12 被阅读15次

一、前言

作者平时使用mpvue开发<u style="text-decoration: none; border-bottom: 1px dashed gray;">小程序</u>,所以下面讲到的方法都是基于mpvue而言的,当然本质上原生小程序语法同样适用。

大家都知道,小程序的接口都是采用回调的方式,这样如果代码逻辑复杂了,将会导致代码难以阅读。今天就通过ES6Promise函数,来稍微改造一下小程序接口,让我们的代码实现链式调用,便于阅读。

二、核心代码

在utils目录下新建文件WXP.js(WX Promise),代码内容如下:

// 代码核心,利用到了ES6的Promise函数
function p (func, obj) {
 return new Promise((resolve, reject) => {
 func({
 ...obj,
 success: resolve,
 fail: reject
 })
 })
}

// 此处导出你在开发中需要用到的小程序接口
export default {
 login: obj => p(wx.login, obj),
 showLoading: obj => p(wx.showLoading, obj),
}

代码原理很简单,主要就是在代码回调的地方,分别调用resolvereject函数,分别对应着successfail回调

三、在顶层main.js下全局配置WXP.js

// main.js
import Vue from 'vue'
import App from './App'
import WXP from './utils/wxp'

Vue.config.productionTip = false
App.mpType = 'app'

Vue.prototype.WXP = WXP

const app = new Vue(App)
app.$mount()

这么做主要是全局配置之后,就不需要每个文件里面都导入WXP.js文件,便于使用。

四、使用

改造前的回调方式:

wx.showLoading({
 title:'测试',
 success:function(){
 wx.login({
 success:function(res){
 console.log(res.code)
 },
 fail:function(err){console.error(err)}
 })
 },
 fail:function(err){
 console.error(err)
 }
})

改造后的链式调用方式

`this.WXP.showLoading({title:'测试'})`
`.then(res=>{`
`return` `this.WXP.login()`
`})`
`.then(res=>{`
`console.log(res.code)`
`})`
`.catch(err=>console.error(err))`

可以看出来,当回调的方式层次不深的时候还是便于阅读的,但是异步操作多了,层次就会多,这样代码就会变得难以阅读。而改造后的链式调用方式,不管你层次有多少,都是一条链一样,一步一步的,思路清晰,易于阅读。不得不说,Promise大法好哈哈哈哈哈哈哈哈哈

参考连接:
[小程序API](<u style="text-decoration: none; border-bottom: 1px dashed gray;">https://developers.weixin.qq.com/miniprogram/dev/api/</u>)
[大白话讲解Promise](<u style="text-decoration: none; border-bottom: 1px dashed gray;">http://www.cnblogs.com/lvdabao/p/es6-promise-1.html</u>)
[阮大佬的Promise](<u style="text-decoration: none; border-bottom: 1px dashed gray;">http://es6.ruanyifeng.com/#docs/promise</u>)

作者:Rychou

原文:用Promise实现小程序接口链式调用-小程序社区/博主专区-微信小程序开发社区-微信小程序联盟

相关文章

  • 用Promise实现小程序接口链式调用

    一、前言 作者平时使用mpvue开发 小程序 ,所以下面讲到的方法都是基于mpvue而言的,当然本质上原生小程序语...

  • 八(2)Promise模拟(姜) ------ 2020-05-

    1、基础的Promise的实现 2、实现then的链式调用

  • Promise实现链式调用

    上一篇文章实现了Promise最基础功能,本文将实现promise核心的链式调用

  • js promise图解

    链式调用 封闭promise

  • 嵌套的promise执行顺序

    外部promise有多个then链式调用,第一个then里面执行另一个promise,也带多个then链式调用,他...

  • Promise链式调用

    一、Promise对象 承诺一定会实现,更简单的处理异步请求。同时更加方便使用链式调用。缺点:Promise对象状...

  • Promise的简单实现

    随着ES6的出现,Promise成为标准,平时使用的次数也增加。但是Promise的原理是什么,如何实现链式调用。...

  • es6 Promise的学习笔记

    promise是什么 promise对象可以理解为一次执行的一步操作,使用promise对象之后可以用一种链式调用...

  • Promise链式调用

    做了一个博客项目,有一个过程如下: 封装request函数(用axios发送请求),axios会返回一个promi...

  • Promise 链式调用

    Promise status状态,有三种状态pendding、resolved、rejected,状态由 pend...

网友评论

    本文标题:用Promise实现小程序接口链式调用

    本文链接:https://www.haomeiwen.com/subject/bmxfzftx.html