prettier
- это одно, eslint
- это другое, если у тебя prettier
подключается через eslint
, то настройки для него указываются скопом, условно так:rules: {
'prettier/prettier': ['warn', {
semi: false,
...
singleQuote: true,
vueIndentScriptAndStyle: true,
arrowParens: 'avoid',
trailingComma: 'none',
quoteProps: 'consistent',
}],
const dateA = new Date('...')
const dateB = new Date('...')
// разница в секундах с точностью до миллисекунды
const differenceInSeconds = (dateA.getTime() - dateB.getTime()) / 1000
// затем можно или отбросить дробную часть
console.log(Math.trunc(differenceInSeconds))
// или округлить одним из методов
console.log(Math.round(differenceInSeconds))
let lastReqDate
app.get('/api/v1/example', (req, res) => {
const date = new Date()
let diff
if (lastReqDate != null) {
diff = (date.getTime() - lastReqDate.getTime()) / 1000
}
if (diff != null && diff < 120) {
diff = Math.ceil(diff) // округление до ближайшего большего целого
res.header('Retry-After', diff)
res.status(429) // Too Many Requests
res.send({ retryAfter: diff })
} else {
lastReqDate = date
// выполнение запроса разрешено
}
})
Вот так уже работаетНу где же оно работает, если у вас 3 раза вывелось undefined и один раз массив? Просто вы перестаёте обращаться к несуществующему свойству и код не падает на первой же итерации. Однако никакой массив ничем не становится, такое значение туда и пришло. Ещё один вариант - this в момент исполнения указывает уже не на объект класса.
(this.listeners || []).forEach(...)
<li>
по дата-атрибуту и добавляйте в его ol. notes всё что душе угодно.const li = document.querySelector('#id-li')
const input = li.querySelector('input')