几个简单方法记录
加载图片
export function loadImg(imgUrl) {
return new Promise(function (resolve, reject) {
var image = new Image();
image.src = imgUrl;
image.onload = function () {
resolve([imgUrl]);
};
image.onerror = function () {
reject(new Error(`${imgUrl}图片加载失败...`));
};
});
}
await loadImg('xxx');
加载js
export function loadJs(absoluteSrc) {
let promise = loadJs.cache.get(absoluteSrc);
if (!promise) {
promise = new Promise((resolve, reject) => {
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = absoluteSrc;
document.body.appendChild(script);
script.onload = () => {
resolve();
};
script.onerror = () => {
reject();
};
});
}
loadJs.cache.set(absoluteSrc, promise);
return promise;
}
loadJs.cache = new Map();
await loadJs('/xxx/xx.js');
延时等待
export const delay = (ms) => new Promise(res => setTimeout(res, ms));
await delya(1000);
处理异步执行
export function makeDefer() {
let defer = null;
const p = new Promise((resolve, reject) => {
defer = { resolve, reject };
});
Object.assign(p, defer);
return p;
}
let num = 0;
const fun = (defer) => {
setTimeout(() => {
num = 3;
defer.resolve();
}, 2000);
}
const fun2 = async () => {
let defer = makeDefer();
fun(defer);
await defer;
console.log(num);
}
fun2();
时间格式化
export function str_date(udate = new Date(), format = 'yyyy-MM-dd hh:mm:ss') {
let newDate;
if (udate instanceof Date) {
newDate = udate;
} else {
newDate = new Date(udate);
}
let date = {
'M+': newDate.getMonth() + 1,
'd+': newDate.getDate(),
'h+': newDate.getHours(),
'm+': newDate.getMinutes(),
's+': newDate.getSeconds(),
'q+': Math.floor((newDate.getMonth() + 3) / 3),
'S+': newDate.getMilliseconds(),
};
if (/(y+)/i.test(format)) {
format = format.replace(RegExp.$1, (newDate.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (let k in date) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ('00' + date[k]).substr(('' + date[k]).length));
}
}
return format;
}