sheru

sheru 查看完整档案

上海编辑  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

sheru 提出了问题 · 9月16日

前端刷新token, 继续之前请求,调取接口返回数据。

封装了ajax请求, 有单独api模块, 如果token过期, 从新刷新token,继续之前的请求,但继续之前的请求,拿不到接口的返回值;如何解决。求大神

`import {domain} from './config'
let isRefreshing = true
let refreshLoginUrls = []
const wxRequest = (params = {}, url) => {
  let token = dd.getStorageSync({key: 'token'}) ? 'Bearer ' + dd.getStorageSync({key: 'token'}).data : ''
 let data = params.query || {}
  return new Promise(async (resolve, reject) => {
    await dd.httpRequest({
      url: domain + url,
 method: params.method || 'GET',
 data: JSON.stringify(data),
 headers: {
        "Content-Type": "application/json",
 Authorization: token
      },
 dataType: 'json',
 success:async sucInfo => {
        if (sucInfo.data && sucInfo.data.resultCode == 401) {
          refreshLoginUrls.push({params: params, url:url})
          if (isRefreshing) {
            isRefreshing = false
 await refreshToken()
          }
          return resolve(sucInfo.data)
        } else {
          return resolve(sucInfo.data)
        }
      },
 fail: failInfo => {
        return reject(failInfo)
      },
 })
  })
}
const refreshToken = () => {
    return new Promise((resolve, reject) => {
      dd.getAuthCode({
        success: loginCode => {
          if (loginCode.authCode) {
            wxPost({query: {code: loginCode.authCode}}, '/api/frontend/login').then(loginInfo => {
              if (loginInfo.resultCode == 200) {
                dd.setStorage({
                  key: "token",
 data: loginInfo.data.access_token,
 success: () => {
                    dd.setStorageSync({key: 'userInfo', data:loginInfo.data.user_info })
                    refreshLoginUrls.forEach(item => {
                      wxPost(item.params, item.url).then(res => {
                        return resolve(res.data)
                      })
                    })
                    refreshLoginUrls = []
                  }
                })
              } else {
                return reject(loginInfo.data)
              }
            })
          }
        }
      })
    })
}
const wxGet = async (params = {}, url) => {
  params.method = 'GET'
 return wxRequest(params, url)
}
const wxPost = async (params = {}, url) => {
  params.method = 'POST'
 return wxRequest(params, url)
}
module.exports = {
  wxRequest, wxGet, wxPost
}``

关注 3 回答 2

sheru 提出了问题 · 9月16日

前端刷新token, 继续之前请求,调取接口返回数据。

封装了ajax请求, 有单独api模块, 如果token过期, 从新刷新token,继续之前的请求,但继续之前的请求,拿不到接口的返回值;如何解决。求大神

`import {domain} from './config'
let isRefreshing = true
let refreshLoginUrls = []
const wxRequest = (params = {}, url) => {
  let token = dd.getStorageSync({key: 'token'}) ? 'Bearer ' + dd.getStorageSync({key: 'token'}).data : ''
 let data = params.query || {}
  return new Promise(async (resolve, reject) => {
    await dd.httpRequest({
      url: domain + url,
 method: params.method || 'GET',
 data: JSON.stringify(data),
 headers: {
        "Content-Type": "application/json",
 Authorization: token
      },
 dataType: 'json',
 success:async sucInfo => {
        if (sucInfo.data && sucInfo.data.resultCode == 401) {
          refreshLoginUrls.push({params: params, url:url})
          if (isRefreshing) {
            isRefreshing = false
 await refreshToken()
          }
          return resolve(sucInfo.data)
        } else {
          return resolve(sucInfo.data)
        }
      },
 fail: failInfo => {
        return reject(failInfo)
      },
 })
  })
}
const refreshToken = () => {
    return new Promise((resolve, reject) => {
      dd.getAuthCode({
        success: loginCode => {
          if (loginCode.authCode) {
            wxPost({query: {code: loginCode.authCode}}, '/api/frontend/login').then(loginInfo => {
              if (loginInfo.resultCode == 200) {
                dd.setStorage({
                  key: "token",
 data: loginInfo.data.access_token,
 success: () => {
                    dd.setStorageSync({key: 'userInfo', data:loginInfo.data.user_info })
                    refreshLoginUrls.forEach(item => {
                      wxPost(item.params, item.url).then(res => {
                        return resolve(res.data)
                      })
                    })
                    refreshLoginUrls = []
                  }
                })
              } else {
                return reject(loginInfo.data)
              }
            })
          }
        }
      })
    })
}
const wxGet = async (params = {}, url) => {
  params.method = 'GET'
 return wxRequest(params, url)
}
const wxPost = async (params = {}, url) => {
  params.method = 'POST'
 return wxRequest(params, url)
}
module.exports = {
  wxRequest, wxGet, wxPost
}``

关注 3 回答 2

sheru 关注了问题 · 9月16日

前端刷新token, 继续之前请求,调取接口返回数据。

封装了ajax请求, 有单独api模块, 如果token过期, 从新刷新token,继续之前的请求,但继续之前的请求,拿不到接口的返回值;如何解决。求大神

`import {domain} from './config'
let isRefreshing = true
let refreshLoginUrls = []
const wxRequest = (params = {}, url) => {
  let token = dd.getStorageSync({key: 'token'}) ? 'Bearer ' + dd.getStorageSync({key: 'token'}).data : ''
 let data = params.query || {}
  return new Promise(async (resolve, reject) => {
    await dd.httpRequest({
      url: domain + url,
 method: params.method || 'GET',
 data: JSON.stringify(data),
 headers: {
        "Content-Type": "application/json",
 Authorization: token
      },
 dataType: 'json',
 success:async sucInfo => {
        if (sucInfo.data && sucInfo.data.resultCode == 401) {
          refreshLoginUrls.push({params: params, url:url})
          if (isRefreshing) {
            isRefreshing = false
 await refreshToken()
          }
          return resolve(sucInfo.data)
        } else {
          return resolve(sucInfo.data)
        }
      },
 fail: failInfo => {
        return reject(failInfo)
      },
 })
  })
}
const refreshToken = () => {
    return new Promise((resolve, reject) => {
      dd.getAuthCode({
        success: loginCode => {
          if (loginCode.authCode) {
            wxPost({query: {code: loginCode.authCode}}, '/api/frontend/login').then(loginInfo => {
              if (loginInfo.resultCode == 200) {
                dd.setStorage({
                  key: "token",
 data: loginInfo.data.access_token,
 success: () => {
                    dd.setStorageSync({key: 'userInfo', data:loginInfo.data.user_info })
                    refreshLoginUrls.forEach(item => {
                      wxPost(item.params, item.url).then(res => {
                        return resolve(res.data)
                      })
                    })
                    refreshLoginUrls = []
                  }
                })
              } else {
                return reject(loginInfo.data)
              }
            })
          }
        }
      })
    })
}
const wxGet = async (params = {}, url) => {
  params.method = 'GET'
 return wxRequest(params, url)
}
const wxPost = async (params = {}, url) => {
  params.method = 'POST'
 return wxRequest(params, url)
}
module.exports = {
  wxRequest, wxGet, wxPost
}``

关注 3 回答 2

sheru 关注了用户 · 7月27日

乌柏木 @wubomu

曾在阿里巴巴跑龙套,现在自己公司打酱油。

关注 929

sheru 赞了回答 · 7月21日

解决移动端不同尺寸设备全屏显示适配,如何处理?

你需要保证的是图片的比例不变
假设图片比例为1:2(宽度:高度),
按你说的规则,需要js支持(无js也行,关键字AspectRatio).
页面加载后获取页面高度,假定为667,则图片宽度应为667*1/2=333.5.将这个宽度设置给图片或它的容器.
你说的按钮,同样按比例定位即可

在线示例

关注 6 回答 5

sheru 关注了问题 · 3月2日

解决typescript interface 定义对象类型

interface Person {
        name: string;
        [propName: string]: string | number;
        age?: number;
    }

[propName: string]: string | number;支持联合类型么,会报错 为什么 求解答,谢谢

关注 1 回答 1

sheru 提出了问题 · 3月2日

解决typescript interface 定义对象类型

interface Person {
        name: string;
        [propName: string]: string | number;
        age?: number;
    }

[propName: string]: string | number;支持联合类型么,会报错 为什么 求解答,谢谢

关注 1 回答 1

sheru 提出了问题 · 2017-12-25

解决canvas画图

1,假如有一个500*500的canvas1,在上面随便画个多边形,记录坐标点
2,另一个页面有一个250*250的canvas2,根据canvas1上返回的多边形坐标点,等比缩放将多边形画到canvas2上。
我想的是 根据大的canvas上的坐标点返回后,计算出相对小的canvas的坐标点,画在小的canvas上,但不知道有没有更好的方法 ,求指教。

关注 3 回答 2

sheru 关注了用户 · 2017-12-19

我仍旧在这里 @worengjiuzaizheli

buona notte a te buona notte a me buona notte achi ancora non ho incontrato...
向你说声晚安,向自己说声晚安,向还没遇见的人说声晚安...

关注 1690

sheru 关注了用户 · 2017-12-15

supreme @supreme_59291e1e59468

关注 242

认证与成就

  • 获得 0 次点赞
  • 获得 4 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 4 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2017-11-28
个人主页被 43 人浏览