美文网首页
Promise的优化方法

Promise的优化方法

作者: 付出的前端路 | 来源:发表于2018-12-13 11:33 被阅读0次

    公共请求的promsie的封装

    export function getJseKey ({value = '' } = {}) {
      return new Promise((resolve, reject) => {
        getEncryptKey().then(res => {
          let pubKey = res.data && res.data.pub_key
          const jse = new JSEncrypt()
          jse.setPublicKey(`-----BEGIN PUBLIC KEY-----` +
          pubKey +
          `-----END PUBLIC KEY-----`)
          let key = jse.encrypt(value)
          resolve(key)
        }).catch(err => {
          reject(err)
        })
      })
    }
    

    原先代码

    ---- 公共请求的promise的封装 前
    getEncryptKey().then(res => {
          return res.data.pub_key
      }).then(pubKey => {
          // 通过公钥加密密码
          let { key } = this.setKey({ pubKey, value: this.data.password })
    ----  
          // 请求登录接口
          let params = {
            account: this.data.phoneNum,
            password: key
          }
          return signInByPassowrd(params)
         }).then(res => {
          token = res.token
          isNewUser = res.data.is_new_user
          userModel = res.data
          wx.setStorageSync('token', token)
          // isNewUser = true
          return utils.getWxcode()
        }).then(res => {
          // 获取openid
          return fetchOpenId({ js_code: res.code })
        }).then(res => {
          userModel.openid = res.data.openid
          if (isNewUser) {
            // 临时存储
            app.globalData.token = token
            app.globalData.userModel = userModel
            callback(token, isNewUser)
          } else {
            wx.setStorageSync('userModel', userModel)
            callback(token, isNewUser)
          }
        }).catch(err => {
          console.log("登录接口-报错", err)
          wx.hideLoading()
          wx.showToast({
            title: err && err.msg ? err.msg : '登录接口出错',
            icon: 'none',
            duration: 2000
          })
        })
    

    现在的代码

    -----  公共请求的promise的封装 后
    getJseKey({ value: this.data.password }).then(passwordKey => {
          // 请求登录接口
          let params = {
            account: this.data.phoneNum,
            password: passwordKey
          }
    -----
          return signInByPassowrd(params)
        }).then(res => {
          token = res.token
          isNewUser = res.data.is_new_user
          userModel = res.data
          wx.setStorageSync('token', token)
          // isNewUser = true
          return utils.getWxcode()
        }).then(res => {
          // 获取openid
          return fetchOpenId({ js_code: res.code })
        }).then(res => {
          userModel.openid = res.data.openid
          if (isNewUser) {
            // 临时存储
            app.globalData.token = token
            app.globalData.userModel = userModel
            callback(token, isNewUser)
          } else {
            wx.setStorageSync('userModel', userModel)
            callback(token, isNewUser)
          }
        }).catch(err => {
          console.log("登录接口-报错", err)
          wx.hideLoading()
          wx.showToast({
            title: err && err.msg ? err.msg : '登录接口出错',
            icon: 'none',
            duration: 2000
          })
        })
    

    相关文章

      网友评论

          本文标题:Promise的优化方法

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