const texts = []
function readFile2Text(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.addEventListener('load', function () {
resolve(reader.result)
}, false)
if (file) {
reader.readAsText(file)
} else {
resolve('')
}
})
async function onFileChange (event) {
for (const file of event.target.files) {
texts.push({ name: file.name, data: await readFile2Text(file) })
}
event.target.value = null
}
let d = new Date;
let offset = d.getTimezoneOffset() * 60*1000
d.setTime(d.getTime() - offset)
let matches = d.toISOString().match(/^(.*?)T(.*?)\./)
console.log(matches[1], matches[2]);
console.log(d.toLocaleDateString(undefined, {weekday: 'short'}));
(язык можно прибить гвоздями, а так будет на языке пользователя) onMouseDown (e) {
const mapContainer = this.$refs.mapContainer // элемент, внутри которого скроллится
if (e.target.tagName !== 'svg') return // в то, что внутри svg можно тыкать мышью, таскаем только за пустое место
this.pos = { // это можно заменить на глобальную переменную
// текущая позиция скролла
left: mapContainer.scrollLeft,
top: mapContainer.scrollTop,
// текущее положение мыши
x: e.clientX,
y: e.clientY,
dragging: true
}
},
onMouseMove (e) {
if (!this.pos.dragging) return
const mapContainer = this.$refs.mapContainer
// смещение мыши
const dx = e.clientX - this.pos.x
const dy = e.clientY - this.pos.y
// скроллим
mapContainer.scrollTop = this.pos.top - dy
mapContainer.scrollLeft = this.pos.left - dx
},
onMouseUp () {
this.pos.dragging = false
},
function fetch(addr) {
return new Promise((resolveFunction) => {
setTimeout(() => {
resolveFunction('addr response') // вызываем функцию, которая прилетела параметром
}, 3000)
})
}
(async () => {
const response = await fetch('https://jsonplaceholder.typicode.com/users');
console.log(response); // результат, который передали в resolveFunction
})();