axios.get()
возвращает Promise. Его метод .then()
выполнится не сразу, а когда-то потом, когда будет получен результат запроса. Представьте, что интернет очччеенньь мееедленнныыыйй.console.log()
в последней строке – сразу же за созданием объекта. Но на тот момент веб-запрос ещё не выполнился.class Address {
address = null;
data = [];
data() {
return this.data;
}
constructor(address) {
this.address = address;
}
fetchInformation() {
return axios.get(`${API_BASE}/getAddressInformation`, {
params: {
address: this.address
}
}).then(({ data }) => this.data = data);
}
}
async function initialize() {
const address = new Address(TEST_WALLET);
await address.fetchInformation();
console.log(address);
}
initialize();
const el = document.createElement('div');
el.constructor.name // "HTMLDivElement"
class Habr {
constructor(q) {
this.q = q;
}
}
const h = new Habr('есть конструктор?');
h.constructor.name // "Habr"
7155 7155 7155 7155 7155 7155 7155 7155
6881 6881 6881 6881 6881 6881 6881 6881
6881 6881 6881 6881 6881 6881 6881 6881
7429 7566 7429 7429 7566 7429 7429 7429
8114 7018 8114 7840 6881 7840 7840 8114
7703 7703 7840 7018 6881 7018 7155 7703
7155 7840 7566 7566 7292 7566 8114 7155
7018 7703 7977 7566 7155 7566 7155 7018
const value = '20047155x20046881x20046881x20047429x20048114x20047703x20047155x20047018x20056745x20047155x20046881x20046881x20047566x20047018x20047703x20047840x20047703x20056745x20047155x20046881x20046881x20047429x20048114x20047840x20047566x20047977x20056745x20047155x20046881x20046881x20047429x20047840x20047018x20047566x20047566x20056745x20047155x20046881x20046881x20047566x20046881x20046881x20047292x20047155x20056745x20047155x20046881x20046881x20047429x20047840x20047018x20047566x20047566x20056745x20047155x20046881x20046881x20047429x20047840x20047155x20048114x20047155x20056745x20047155x20046881x20046881x20047429x20048114x20047703x20047155x20047018';
value.split('x').map(s => +s.replace(/^2004/, ''))
.reduce((acc, c, i) => {
if ((i + 1) % 9 !== 0) {
(acc[i % 9] ??= []).push(c);
}
return acc;
}, [])
.map(ar => ar.join(' '))
.join('\n')
7155, 6881, 7429, 8114, 7703,
7018, 7566, 7840, 7977, 7292
[...value.split('x').map(s => +s.replace(/^2004/, ''))
.reduce((acc, c, i) => {
if ((i + 1) % 9 !== 0) {
acc.add(c);
}
return acc;
}, new Set())].join(', ')
function makeAbbr(words) {
let result = '';
for (let i = 0; i < words.length; i++) {
const char = words[i];
if (char !== ' ' && (i === 0 || words[i - 1] === ' ')) {
result += char;
}
}
return result;
}
символ — не пробел, И, к тому же, самый первый в тексте, ИЛИ перед ним был пробел.const makeAbbr = words =>
words
.trim() // убрать пробелы по краям строки
.split(/\s+/) // разбить по пробелу(ам) в массив
.map(w => w[0].toUpperCase()) // от каждого взять первые буквы
.join(''); // склеить в строку
makeAbbr(' мир труд май') // "МТМ"
innerHTML
на каждой итерации — плохо (медленно). Лучше один раз собрать весь HTML в строку, и один раз заменить innerHTML
.const html = new Array(12)
.fill()
.map((_, i) => {
const parallax = `./src/img/parallax/${i & 1 ? 2 : 1}.jpg`;
const hero = './src/img/home/hero.jpg';
const title = `Code №${i + 1}`;
const codepen = `Codepen-${i + 1}`;
return `
<div class="portfolio__codepen">
<div class="portfolio__codepen-background"></div>
<img class="portfolio__codepen-image" src="${parallax}">
<div class="portfolio__codepen-down">
<img src="${hero}" class="codepen-down__hero">
<div class="codepen-down__text">
<h4>${title}</h4>
<h5>${codepen}</h5>
</div>
<a href="#codepen" class="codepen-down__link">Source</a>
</div>
</div>
`;
})
.join('\n');
item.innerHTML = html;
const A = class { constructor() { this.name = 'I am A';} };
const B = class { constructor() { this.name = 'I am Bee';} };
const allClasses = { A, B };
const className = 'A';
const instance = new allClasses[className]();
console.log(instance.name); // I am A
getState()
и рано или поздно меняет состояние через dispatch()
.async
функции возвратить Promise.reject()
— то же, что бросить Exception в обычном синхронном коде. Подробнее. React.createElement()
const a = { x: 1, y: 2}; // главные свойства
const b = { y: 3, z: 5}; // второй товар для сравнения с главным
const comparison = {
// каждому из свойств A подставляем значения из B или прочерк если нет
...Object.keys(a).reduce((acc, c) => (acc[c] = b[c] ?? '-', acc), {}),
// дописываем поверх свойства B
...b
}
// получилось:
{ x: "-", y: 3, z: 5 }
access_token
.const colorSelect = document.querySelector('.hasCustomSelect[name="features[13]"]');
const plugSelect = document.querySelector('.hasCustomSelect[name="features[12]"]');
const onChange = () => {
const colorValue = colorSelect.value;
const plugValue = plugSelect.value;
if (colorValue === '1' && plugValue === '42') {
console.log('Оба, на', { colorValue, plugValue });
} else {
console.log('Всё не то..', { colorValue, plugValue });
}
};
[colorSelect, plugSelect].forEach(el => el.addEventListener('input', onChange));