import wafer from '../lib/wafer2-client-sdk'
import tip from './tip'
// 时间格式化
const formatTime = time => {
time = (time.length == 10) ? parseInt(time) * 1000 : parseInt(time)
var date = new Date(time)
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('-')
}
// Money格式化
const formatFen2Jiao = fen => {
if (fen) {
return parseFloat(fen / 100, 2)
} else {
return '0.00'
}
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
const deepClone = obj => {
const _this = this
var temp = null
if (obj && obj instanceof Array) {
temp = []
temp = obj.map(function (item) {
return deepClone(item)
})
} else if (obj && typeof obj === 'object') { // typeof null 的值是 object
temp = {}
for (let item in obj) {
temp[item] = deepClone(obj[item])
}
} else {
temp = obj
}
return temp
}
// 复制粘贴
const clip = (obj) => {
wx.setClipboardData(obj)
}
async function request(options, page, tryout, successCB, failCB) {
const session = wafer.Session.get()
if (tryout === 0) {
return
}
let tryTmp = 0
let result = 0
let failTmp = 0
while (tryTmp++ < tryout && !result) {
if (tryTmp > 2) await sleep(3)
failTmp = await tryRequest(options)
if (failTmp.data && (failTmp.data.code || failTmp.data.code == 0)) {
result = failTmp
}
}
if (result) {
successCB.call(page, result)
} else {
failCB.call(page, failTmp)
}
if (options.tip) {
tip.loaded()
}
}
async function tryRequest(options) {
return new Promise((resolve, reject) => {
if (options.tip) {
tip.loading()
}
wafer.request({
method: options.method || 'GET',
data: options.data || {},
url: options.url,
success: function (res) {
resolve(res)
},
fail: function (err) {
console.log('try err:', err)
if (!err.code) {
resolve(0)
} else {
resolve(err)
console.log('请求失败url', options.url)
console.log('请求失败', err)
}
},
complete: function (res) {
// console.log(res)
}
})
})
}
async function sleep(sec) {
return new Promise(resolve => {
setTimeout(() => {
let tmp = ''
console.log('sleep ' + sec + ' seconds')
resolve(true)
}, sec * 1000)
})
}
function getuuid(u) {
let mydate = new Date()
let uuid = u + mydate.getDay() + mydate.getHours() + mydate.getMinutes() +
mydate.getSeconds() + mydate.getMilliseconds() + Math.round(Math.random() * 10000)
return uuid
}
module.exports = {
formatTime,
deepClone,
formatFen2Jiao,
clip,
request,
getuuid
}

小程序util工具的更多相关文章

  1. 微信小程序 - Util工具类

    /utils/utils.js   已经扩展到App对象中,Page方法中直接使用  app.util.method(...) 调用. 1. 扩展String.replaceAll JS默认值提供re ...

  2. 微信小程序开发工具测评

    1月9日微信小程序正式上线.很多企业都希望能在这个.但是在技术开发的问题上,却不知道该如何下手.经过一些程序员不辞辛苦连夜测试,终于从十余款工具呕心沥血筛选出四款比较靠谱实用的微信小程序开发工具.接下 ...

  3. HotApp小程序统计,第一个专业的微信第三方小程序统计工具

    1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道友盟统计一样,小程序也需要有个统计工具. 通过这个工具,可以知道小 ...

  4. 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?

    原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复   ...

  5. 微信小程序开发工具使用与设计规范(二)

    [未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...

  6. mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...

  7. 微信小程序开发工具中快捷键

    微信小程序开发工具表面上是没有更多的样式类的工具,例如缩进.隐藏代码什么的. 现在总结一下小程序开发工具常用的一些快捷键: 格式调整 Ctrl+S:保存文件Ctrl+[, Ctrl+]:代码行缩进Ct ...

  8. ubuntu系统安装微信小程序开发工具

    在ubuntu系统中安装微信小程序开发工具之前,先要安装wine与git 一.安装wine 1.如果您的系统是64位,启用32位架构(如果您还没有) sudo dpkg --add-architect ...

  9. 微信小程序开发工具

    微信小程序 1● 工具下载 https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html     2● webchart_devto ...

随机推荐

  1. Git 常用使用技巧

    1.创建代码仓库 Step 1:先配置下我们的身份吧,这样在提交代码的时候Git就可以知道是谁提交的,命令如下: git config --global user.name "coder-p ...

  2. sticky-footer的三种解决方案

    在网页设计中,Sticky footers设计是最古老和最常见的效果之一,大多数人都曾经经历过.它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送 ...

  3. WAI-ARIA无障碍网页应用属性完全展示

    本文为原创辛苦之作,尊重劳动,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]本文地址:http://www.zhangxinxu.com/wordpress ...

  4. Easy Graphics Engine vs2015使用

    vs2017: 下载 https://pan.baidu.com/s/1qWxAgeK 里面的 “ege19.01_vs2017 (推荐, 修正win10 1809 上无法正常运行的问题).zip”  ...

  5. SpringBoot学习路线

    网上也有很多github资源,都是自己学习Spring Boot时候,自己练的代码 虽然现在最新的版本用2.1.3.RELEASE版本,以前版本的demo运行可能会遇到错误.但是有总比没有要好,不是么 ...

  6. hashtable详解

    hashtable也比称作哈希表,键值对或者关联数组 1. 先引用using System.Collections;命名空间 用于处理和表现key/value的键值对,其中key通常用来快速查找,同时 ...

  7. Qt访问注册表并调用子进程

    在实际应用中需要在一个进程启动另外一个进程,可以将子进程的路径写入注册表中,然后主进程读取注册表中子进程路径,启动子进程,并以命令行参数的形式传入参数,启动子进程.具体实现方式如下 (1)      ...

  8. CentOS7.6 如何设置静态ip

    [root@localhost network-scripts]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts] ...

  9. winfrom 动态添加控件,以及删除

      private void btnadd_Click(object sender, EventArgs e)         {             int fileCount = 0;     ...

  10. HG255D 刷机备忘

    <该死的系统,就是不重启.这文章也没意义了> 1.前期固件准备:①软件:XXXXX.bin②openwrt固件:XXXX.bin(我用的是shcl版的,感觉还不错,你也可以刷其他版本的) ...