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. python 操作记事本

    需事先打开记事本,再运行下面脚本 # encoding: utf- import win32api import win32gui import win32con print("Hello, ...

  2. mysql 事件 按月分表

    /****** 对象: Table Order_201512 脚本日期: 2015/12/18 11:44:23 ******/ /****** 字段数据长度 = 2599 字节 ******/ CR ...

  3. sklearn.learning_curve

    学习曲线函数: from sklearn.learning_curve import learning_curve 调用格式: learning_curve(estimator, X, y, trai ...

  4. 让DOM从页面中消失的方法

    1. 在隐藏的方法中,display取none值这种方法一般是不可取的!因为display:none是直接不显示,也就是不渲染此元素,如果它所作用的元素排版在页面较前,先渲染,就容易引起回流(refl ...

  5. JS _proto_ 和 prototype

    转载自:https://www.cnblogs.com/wuwenjie/p/5433776.html 大佬讲得很明白,自己也收藏一下! 初学javascript的时候也跟题主一样搞不清楚,自己好好总 ...

  6. Inception Network

    1. 下图为一个Inception 模块,即将输入的图像通过多种过滤器或者池化操作后,全部再给拼起来形成新的图像. 2. Inception 网络就是讲将多个Inception模块连起来而已,如下图的 ...

  7. linux基础05-管道及IO重定向

    (1)I/O重定向:Linux:>: 覆盖输出>>:追加输出 (2)set -C: 禁止对已经存在文件使用覆盖重定向: 强制覆盖输出,则使用 >|set +C: 关闭上述功能 ...

  8. AtCoder Regular Contest 100 Equal Cut

    Equal Cut 思路: 枚举中间那个分界点,然后两边找使得切割后差值最小的点,这个可以用双指针 代码: #include<bits/stdc++.h> using namespace ...

  9. Python pickle使用

    2019-01-15 10:04:32 用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 jso ...

  10. 【转】 H.264编码原理以及I帧B帧P帧

    转自:http://www.cnblogs.com/herenzhiming/articles/5106178.html 前言 ----------------------- H264是新一代的编码标 ...