const sum = arr => arr.reduce((acc, i) => acc + i);
const calculateSquaresSum = arr => sum(arr.map(i => i.calcArea()));
loadPage = () => {
Progress.show();
this._hideAllTimeout = setTimeout(() => Progress.hideAll(),800);
}
componentWillUnmount() {
clearTimeout(this._hideAllTimeout);
}
Не понятно почему эта херня будет выполняться параллельно
const await1 = await pause500ms(); // ожидаем 500мс разрешение промиса и получаем undefined
const await2 = await pause500ms(); // ожидаем 500мс разрешение промиса и получаем undefined
await await1; // передаем undefined и получаем разрешенный промис
await await2; // передаем undefined и получаем разрешенный промис
console.log("I will be logged after 500ms"); // No, you will be logged after 1000ms
await await1;
и await await2;
на первый взгляд не оказывают влияния на код, но это не так.(async() => {
await console.log(1);
await console.log(2);
console.log(3);
})();
console.log(4);
(async() => {
await console.log(5);
console.log(6);
})();
console.log(7);
// 1
// 4
// 5
// 7
// 2
// 6
// 3
Какой промис возвращает функция - разрешенный или нет?
function pause500ms() {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(); // вот тут разрешается созданный Promise
}, 500);
});
}
В константу await1 записывается функция(?) или результат ее исполнения, а именно промис?
А здесь, получается, функция вызывается?
await await1;
await await2;
console.log("I will be logged after 500ms");
Promise.resolve(undefined).then(() => {
Promise.resolve(undefined).then(() => {
console.log("I will be logged after 500ms");
});
});
Что значит возвращает промис?
// Что значит промис. Промис, это спецобъект, содержащий свое состояние и инструкции, которые необходимо исполнить после достижения того или иного состояния. Так? Так.
const property = 'value';
foo({ property }); // эквивалентно foo({ property: property });
function foo(obj) {
console.log(obj.property);
}
function foo({ property }) {
console.log(property);
}
function foo(obj) {
const property = obj.property;
console.log(property);
}
function foo(obj) {
const { property } = obj;
console.log(property);
}
sum(1,2)
массив аргументов [1,2]
.if (!checks[i](arguments[i]))
вызывает функцию проверки из массива checks по индексу i, передает в нее аргумент из arguments по индексу i и возвращает результат в условие. for (var i = 0; i < arguments.length; i++) {
if (!checks[i](arguments[i])) {
alert("Некорректный тип аргумента номер " + i);
return;
}
}
sum(1,2)
, эквивалентен вызову:if (!checkNumber(1)) {
alert("Некорректный тип аргумента номер 0");
return;
}
if (!checkNumber(2)) {
alert("Некорректный тип аргумента номер 1");
return;
}
true
и ["array", "in", "sum?!?"]
не проходят проверку checkNumber. let cart = [];
// сумму тут хранить не надо
const initCart = () => {/* ... */};
const addProduct = (product, quantity) => {/* ... */};
const deleteProduct = id => {/* ... */};
const changeQuantity = (id, quantity) => {/* ... */};
const addProduct = (product, quantity) => {
const index = cart.indexOf(item => item.product.id = product.id);
if (index !== -1) {
cart = cart.map((item, i) =>
i === index ? { ...item, quantity: item.quantity + quantity } : item);
} else {
cart = [ ...cart, { product, quantity} ];
}
const sum = cart.reduce((sum, item) => sum + item.price * item.quantity, 0);
localStorage.setItem('cart', JSON.stringify(cart));
localStorage.setItem('sum', JSON.stringify(sum));
return dispatch => {
dispatch({
type: ADD_PRODUCT,
payload: {
cart,
sum,
},
});
};
}
if (index !== -1) {
cart[index].quantity += quantity;
} else {
cart.push({ product, quantity });
}
{
product,
quantity,
}
const someCategoryProducts =
filteredProducts.filter(product => product.category === "Some, category");
return (
<div>
<div>{someCategoryProducts.length}</div>
<div>{someCategoryProducts.map(mapFn)}</div>
<div>
);
const x = "Categories=All&Search=Filus";
const parseQueryString = str => str.split('&').reduce((acc, el) => {
const [key, value] = el.split('=');
acc[key] = value;
return acc;
}, {});
const params = parseQueryString(x);
console.log(params); // { Categories: "All", Search: "Filus" }
const values = Object.values(params);
console.log(values); // [ "All", "Filus" ]