function wait(delay) {
let promise;
const fn = function(result) {
return promise || (promise = new Promise(resolve => setTimeout(resolve, delay, result)));
};
fn.then = resolve => fn().then(resolve); // использование функции как thennable
return fn;
}
const req = wait(2000)
.then(() => {
console.log('Подготовка данных...');
const data = {
name: 'Personal computer',
model: 'MSI',
price: 120000,
weightKG: 10,
};
return data;
})
.then(wait(2000))
.then(data => {
console.log('Обработка данных...');
data.status = 'order';
data.discount = '20%';
data.price -= 120000 * parseInt(data.discount, 10) / 100;
return data;
})
.then(wait(2000))
.then(data => {
console.log('Выписка чека...');
data.check = `№${Math.floor(Math.random() * 100000000)}`;
return data;
})
.then(wait(2000))
.then(data => {
console.log(`Данные получены:
1.Наименование: ${data.name}
2.Модель: ${data.model}
3.Цена: ${data.price}
4.Вес: ${data.weightKG}
5.Статус: ${data.status}
6.Скидка: ${data.discount}
7.Чек: ${data.check}`);
})
.then(wait(2000))
.then(() => {
console.log('...:::С новым годом!:::...');
});
Object.defineProperty(module, 'exports', {
get() {
return {
name: '',
url: '',
routes: [],
list: [],
item: null,
default: {
name: null
},
loadList: () => ({
// Тут что-то происходит
})
}
}
})
require
перед каждым вызовом: delete require.cache[path.resolve('<module>')]
. splice
с forEach
. Используй либо filter
(создавая новый массив), или цикл с обратным перебором, или простой цикл и коррекцию индекса после удаления.splice(i, 1)
длина массива уменьшается на 1 и по индексу i
становится следующий элемент. Соответственно, при следующей итерации i+1
указывает не на следующий элемент(который сдвинулся вверх), а на через один. const generator = (function* () {
for (let i = -2e9; i < 2e9; i++) {
yield console.log(i);
}
}());
while(!generator.next().done);
// ==UserScript==
// @name figma.com translate
// @namespace figma.com
// @version 0.1
// @author Aetae
// @match *://*.figma.com/*
// @grant none
// @run-at document-start
// ==/UserScript==
Object.defineProperty(Object.prototype, 'defaultStringsRaw', {
set(defaultStringsRaw) {
delete Object.prototype.defaultStringsRaw;
this.defaultStringsRaw = Object.assign(defaultStringsRaw, {
"copy-as-css": "Копировать CSS",
});
},
configurable: true
});
date.setDate(date.getDate());
эта строчка не имеет смысла(ничего не делает). date.setHours(0, 0, 0, 0)
. setUTCDate
, после чего вместо setHours
- setUTCHours
.eq
, а только gte
+ lte
. В консоле нельзя вызвать цикл и писать сложный код.
через браузер впихнуть свой JS
script
и подгружай туда что хошь.element.addEventListener("mouseover", function () {
...
this.addEventListener("mouseout", function () { ... });
});
делать нельзя никогда. Это, простите - говно. mouseout
. 10 раз навели - 10 обработчиков висит и срабатывает по уводу мышки..figures__hover
где-то ниже .what-we-do__li
- полностью, иначе частично: в обработчике меняется только класс контейнера.mouseenter
и mouseleave
.