docker.ping()
видимо, возвращает Promise. Надо дождаться его выполнения и только тогда возвращать ответ.const promises = endpoints.filter((i) => i.type === 1)
.map((i) => {
const result = {
id: i.id,
name: i.name,
type: i.type,
url: i.url,
groupId: i.groupId
};
const settings = (i.url.match('unix:///var/run/docker.sock')) ?
{socketPath: '/var/run/docker.sock'} : {host: i.url, port: 2375};
const docker = new Docker(settings);
return docker.ping().then(err => {
result.status = !err;
return result;
})
});
Promise.all(promises).then((results) => res.send(results));
const sliderOptions = {
arrows: true,
dots: false,
variableWidth: true,
centerMode: true,
slidesToShow: 8,
autoplay: true,
autoplaySpeed: 2000,
slidesToScroll: 3,
nextArrow: '<div class="tags__arrow tags__arrow_next">',
prevArrow: '<div class="tags__arrow tags__arrow_prev">',
appendArrows: $('.tags__arrows'),
}
const sliderSet = (is_on) => {
if (is_on) {
$('.tags__option_on').hide();
$('.tags__option_off').show();
$('.tags__inner').slick(sliderOptions);
} else {
$('.tags__option_on').show();
$('.tags__option_off').hide();
$('.tags__inner').slick('unslick');
}
}
$('.tags__option_on').on('click', () => sliderSet(true));
$('.tags__option_off').on('click', () => sliderSet(false));
sliderSet(false); // начальное состояние
const animateElement = (el) => {
const endValue = +el.dataset.value;
let currValue = 0;
const update = () => {
el.innerText = ++currValue;
if (currValue < endValue) {
setTimeout(update, 20);
}
}
update();
}
[...document.querySelectorAll('[data-value]')].forEach(animateElement);
Тут неоптимальный момент, обилие часто создаваемых Timeout'ов: при большом количестве элементов и короткой задержке может тормозить. Альтернативный вариант сделать единые общие «часы» обновляющие, при необходимости, каждого участника коллекции. <div class="container">
<p class="text" data-text-a="ЭТО СТАРЫЙ ТЕКСТ" data-text-b="ВОТ НОВЫЙ ТЕКСТ"></p>
<div class="btn">ВЫБРАТЬ</div>
</div>
const state = {
isPrimary: true,
// потом добавятся может ещё свойства
};
render()
, которая отрисовывает состояние «на сейчас».oldArray.map(({prop1, prop2} => ({prop1, prop2}))
const oldArray = [
{a: "A1", b: "BB1", prop1: "wanted1", prop2: "dead or alive1", z: "zee1"},
{a: "A2", b: "BB2", prop1: "wanted2", prop2: "dead or alive2", z: "zee2"},
{a: "A3", b: "BB3", prop1: "wanted3", prop2: "dead or alive3", z: "zee3"},
{a: "A4", b: "BB4", prop1: "wanted4", prop2: "dead or alive4", z: "zee4"},
{a: "A5", b: "BB5", prop1: "wanted5", prop2: "dead or alive5", z: "zee5"},
];
const newArray = oldArray.map(({prop1, prop2}) => ({prop1, prop2}));
// [
// {"prop1": "wanted1", "prop2": "dead or alive1"},
// {"prop1": "wanted2", "prop2": "dead or alive2"},
// {"prop1": "wanted3", "prop2": "dead or alive3"},
// {"prop1": "wanted4", "prop2": "dead or alive4"},
// {"prop1": "wanted5", "prop2": "dead or alive5"}
// ]
const handler = () => {
console.log('click');
}
document.addEventListener('click', handler);
document.addEventListener('click', handler);
document.addEventListener('click', handler);
// при клике выведет только 1 сообщение в консоль
$(document).on('click', handler);
$(document).on('click', handler);
$(document).on('click', handler);
// при клике вывалится 3 сообщения
const dirname = (str) => {
const pos = str.lastIndexOf('/');
if (-1 === pos) return str;
return str.substring(0, pos);
}
dirname('/siparis/kampanyalar/tumu/cok-karisik-orta-firsati')
// /siparis/kampanyalar/tumu
const [data1, data2, data3] = await Promise.all(
['/test1', '/test2', '/test3']
.map((url) => http.get(url).then(({ data }) => data))
)
.then((values) => {
console.log('values', values);
return values;
});
const [data1, data2, data3] = await Promise.all(
['/test1', '/test2', '/test3']
.map((url) => http.get(url))
)
.then((values) => values.map(({ data }) => data));
var array = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
array
// из каждого сделать функцию, возвращающую промис
.map((el) => () => new Promise((resolve, reject) => $.ajax({
url: '/assets/themes/theme/send.php',
method: 'post',
data: {text: el},
success: resolve,
error: reject,
})))
// склеить цепочку
.reduce((acc, c) => acc.then(() => c()), Promise.resolve())
.catch(err => console.error(err));
const messages = {
'ru': 'Ваше сообщение успешно отправлено!',
'ua': 'Ваше повідомлення успішно відправлено!',
'en': 'Your message has been successfully sent!',
'cn': '您的留言已成功发送!',
}
const path = window.location.pathname; // чтобы не совпало с ya.ru/zz/search?q=/ru/
const defaultLanguage = 'en';
const language = Object.keys(messages)
.reduce((acc, c) => path.includes(`/${c}/`) ? c : acc, defaultLanguage);
const text = messages[language];
let digits = "85172"; // в кавычках, значит это строка
let product = 1; // произведение
// у строки есть свойство длины: length
// к букве в строке можно обращаться по номеру её положения
// буква – тоже строка, надо её перевести в число через Number()
for (let i = 0; i < digits.length; i++) {
const digit = Number(digits[i]); // цифра
product = product * digit;
}
// умножили. Теперь можно вывести:
console.log(product); // 560
function getIndex(adr) {
// ...
return fetch(ajaxurl, {
method: 'POST',
body: formData
}).then(resp => resp.text())
.then(showResult)
// парашютики не забываем:
.catch(err => console.error(err));
}
function showResult(data) {
console.log(data);
}
getIndex('https://ya.ru/'); // вернёт промис, ну и фиг с ним
function getIndex(adr) {
// ...
return fetch(ajaxurl, {
method: 'POST',
body: formData
}).then(resp => resp.text())
.then(showResult)
.catch(err => console.error(err));
}
getIndex('https://ya.ru/')
.then(data => {
document.querySelector('#output').innerText = data;
})
.catch(err => console.error(err));
[2, -1, 2, 3, -9] = 6
(у вас получается 5)[-2, -1, 1, 2] = 3
(у вас выводит 2)function getMaxSubSum(arr) {
let max = 0;
const length = arr.length;
for (let frame = length; frame > 0; frame--) {
let sum = 0;
for (let i = 0; i < frame; i++) sum += arr[i];
max = Math.max(max, sum);
// move frame
for (let offset = 1; offset <= length - frame; offset++) {
sum -= arr[offset - 1];
sum += arr[offset + frame - 1];
max = Math.max(max, sum);
}
}
return max;
}
const tests = () => {
[
[[-1, 2, 3, -9], 5],
[[2, -1, 2, 3, -9], 6],
[[-1, 2, 3, -9, 11], 11],
[[-2, -1, 1, 2], 3],
[[100, -9, 2, -3, 5], 100],
[[1, 2, 3], 6],
[[-1, -2, -3], 0],
].forEach((el, i) => {
const result = getMaxSubSum(el[0]);
console.assert(result === el[1], "Test %d failed: [%s] %d != %d", i, el[0], result, el[1]);
})
}
tests();