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. 简单实现RN调用原生方法(IOS)

    在React Native中,一个“原生模块”就是一个实现了“RCTBridgeModule”协议的Objective-C类(个人理解RCTBridgeModule就是react与native之间的桥 ...

  2. 【BZOJ】4013: [HNOI2015]实验比较

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4013 中第i 条涉及的图片对为(KXi, Xi),判断要么是KXi < Xi ,要么 ...

  3. sklearn dataset 模块学习

    sklearn.datasets官网:http://scikit-learn.org/stable/datasets/ sklearn.datasets 模块主要提供一些导入.在线下载及本地生成数据集 ...

  4. DLL.LoadLibrary失败(126)

    1.LoadLibrary 返回 NULL,GetLastError 显示的是 错误码126,msdn上是这样的: ERROR_MOD_NOT_FOUND 126 (0x7E) The specifi ...

  5. eclipse打开失败

    以前eclipse运行好好的,某一次运行启动不了,一直图标那里转圈,不能启动, 运行eclipsec.exe后,查看发现出现以下错误 SLF4J: Class path contains multip ...

  6. img 下方的4px像素问题

    问题:在一个div块里面放了一个图片,图片下面有内容,可以不管怎么调试,在火狐浏览器,IE6下.图片img底部多出了4个像素 解决:img样式中   vertical-align: top/middl ...

  7. 简单理解Hadoop架构原理

    一.前奏 Hadoop是目前大数据领域最主流的一套技术体系,包含了多种技术. 包括HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统),等等. 有些朋友可能 ...

  8. Mac批量转换mp3为caf

    创建一个sh文件,输入如下代码后运行. 遍历文件夹中的mp3然后使用afconvert命令进行转换. #!/bin/bash for i in *.mp3; do afconvert $i " ...

  9. cocos2dx 如何获得节点的类型

    1. 需求:在所有子节点中得到是ui::Text类型的节点,并对其进行操作. 2. 解决方案:在根节点Node中有一个如下的函数: /** * Gets the description string. ...

  10. php中文件操作常用函数有哪些

    php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...