Женя
Alex
Alex
еще был дейятель,который срубил гранд на дофига денег за антивирус, который нричего не умеет
Denis
Ler
да не
Denis
mdn ещё нормально сверстан
Nick
Друзья, всем дратути. Подскажите пожалуйста, есть ли какой то способ проверить, работает ли мой callback на ajax запросы.
В приложении необходимо навесить коллбек на все исходящие аяксы.
Я создаю callback (патчу XMLHttpRequest.prototype.send), навешиваю его, после чего вызываю тестовый fetch и жду, что callback вызовется (при его выполнении сеттится переменная isCallbackWork=true).
Проблема в том, что после вызова пробного фетча (выполнения которого я дожидаюсь await’ом) проходит какое-то время перед тем, как переменная засеттится, т.е. она будет false еще какое-то время (пару миллисекунд)
Промисы тут не помогут, потому что callback может либо прийти либо нет (оба варианта меня устраивают, но нужно это как-то проверить)
Я добавил sleep 10 миллисекунд, но что-то мне подсказывает, что можно этого избежать
Псевдокод:
async function enableCallback() {
applyCallback(); // тут происходит навешивание
await ajaxCallbackCheck(); // тут вызывается тестовый fetch
await sleep(10); // Без этой штуки в следующей строке isCallbackWork будет false
if (isCallbackWork) {
console.log(Done);
}
}
Nick
Убил туеву хучу времени, решения не нашел
Nick
Мб есть какой-нибудь другой способ проверки, не асинхронный
🦜
взять axios и написать функцию интерсептор
🦜
Denis
export default (http, /* store, */router) => {
// https://github.com/mzabriskie/axios#interceptors
http.interceptors.response.use(
(response) => response,
/**
* This is a central point to handle all
* error messages generated by HTTP
* requests
*/
(error) => {
const { response } = error
/**
* If token is either expired, not provided or invalid
* then redirect to login. On server side the error
* messages can be changed on app/Providers/EventServiceProvider.php
*/
// eslint-disable-next-line no-magic-numbers
if ([401, 400].indexOf(response.status) > -1) {
router.push({ name: 'auth.singin' })
}
/**
* Error messages are sent in arrays
*/
// if (isArray(response.data)) {
// store.dispatch('setMessage', { type: 'error', message: response.data.messages })
/**
* Laravel generated validation errors are
* sent in an object
*/
// } else {
// store.dispatch('setMessage', { type: 'validation', message: response.data })
// }
// store.dispatch('setFetching', { fetching: false })
return Promise.reject(error)
}
)
}
Konstantin
#вакансия
Город и адрес офиса: Санкт-Петербург/Москва
Формат работы: удаленка
Занятость: проектная
Зарплатная вилка: от 400 до 900 в час
Описание вакансии:
VueJS, TypeScript
Всем привет, мы занимаемся интеграцией айти продуктов в компании, но иногда заказчика не полностью устраивает продукт и он хочет дополнительный функционал.
Сейчас нам в команду требуется разработчики фронтенда.
По проекту, мы делаем корпоративное приложение для сотрудников одной компании. Сейчас у нас уже реализован некоторый функционал, на данном этапе работаем над магазином приложений, аналог гугл плея.
Название компании: Телекоминвест
Контакты: @malyshevko malyshevko@isurance.ru
Nick
axios это обертка на XHR
Всё так. Тут вот в чем трабла. У меня Shopify приложение. И это значит что на магазине любое другое приложение можер просто переписать XHR. А мне нужно понять, все окей или что-то меня переопределило
Alex
народ, кто нибудь знает канал дизайнеров в телеге?
🦜
🦜
Alex
печаль, хотел за дизайн пообщаться😁
Nick
Друзья, всем дратути. Подскажите пожалуйста, есть ли какой то способ проверить, работает ли мой callback на ajax запросы.
В приложении необходимо навесить коллбек на все исходящие аяксы.
Я создаю callback (патчу XMLHttpRequest.prototype.send), навешиваю его, после чего вызываю тестовый fetch и жду, что callback вызовется (при его выполнении сеттится переменная isCallbackWork=true).
Проблема в том, что после вызова пробного фетча (выполнения которого я дожидаюсь await’ом) проходит какое-то время перед тем, как переменная засеттится, т.е. она будет false еще какое-то время (пару миллисекунд)
Промисы тут не помогут, потому что callback может либо прийти либо нет (оба варианта меня устраивают, но нужно это как-то проверить)
Я добавил sleep 10 миллисекунд, но что-то мне подсказывает, что можно этого избежать
Псевдокод:
async function enableCallback() {
applyCallback(); // тут происходит навешивание
await ajaxCallbackCheck(); // тут вызывается тестовый fetch
await sleep(10); // Без этой штуки в следующей строке isCallbackWork будет false
if (isCallbackWork) {
console.log(Done);
}
}
Короче никто не в курсе, как это делается. Жаль, но всё равно всем спасибо
Denis
export default (http, /* store, */router) => {
// https://github.com/mzabriskie/axios#interceptors
http.interceptors.response.use(
(response) => response,
/**
* This is a central point to handle all
* error messages generated by HTTP
* requests
*/
(error) => {
const { response } = error
/**
* If token is either expired, not provided or invalid
* then redirect to login. On server side the error
* messages can be changed on app/Providers/EventServiceProvider.php
*/
// eslint-disable-next-line no-magic-numbers
if ([401, 400].indexOf(response.status) > -1) {
router.push({ name: 'auth.singin' })
}
/**
* Error messages are sent in arrays
*/
// if (isArray(response.data)) {
// store.dispatch('setMessage', { type: 'error', message: response.data.messages })
/**
* Laravel generated validation errors are
* sent in an object
*/
// } else {
// store.dispatch('setMessage', { type: 'validation', message: response.data })
// }
// store.dispatch('setFetching', { fetching: false })
return Promise.reject(error)
}
)
}
@LazyNick вот же
Nick
@LazyNick вот же
Так эта штука навешивает коллбэк, а не проверяет его, насколько я понял
Nick
Вернее не так, она будет работать, если коллбэк вызовется. А он может не вызваться
Denis
Promise
.then()
.catch()
.finally()
Denis
Nick
Представь, что никто не вызвал getRates, потому что его переопределили. Что делать в таком случае?
Denis
То что его переопределили не означает что его не вызовут.
Denis
Что значит переопределили?
Denis
Тебя взломали?
Nick
Тебя взломали?
Это Shopify магазин. Там куча плагинов, каждый из которых делает что хочет с чем хочет
Я сделаю функцию hello() {return 1}, а другой плагин перепишет ее на hello() {return 2}
Alex
как заставить себя доделать верстку страницы?)
Alex
😁
Alex
вообще ломает делать ее
Alex
надо розги будет купить))
Ler
вот есть ли хоть какая-то логика в clear: both; и overflow: hidden для флоатов ? Не связываются эти вещи у меня в голове чот
Alex
действительно))
Alex
я никогда не использовал clear: both
Maksim
Alex
Alex
бутстрап давно на него перешел
Ler
да я хочу понять эти флоаты
Alex
чего понимать их?)
Ler
я из-за них бросил вообще изучение фронт энд 4 года назад
Ler
тупо верстал наугад и ставил эти clear both
Alex
overflow: hidden вообще не стоит много тыкать, толкуо от этого не будет особо
Ler
Ler
как оно распознает высоту ?)
Ler
почему оно ее распознает
Alex
там ведь не указана конкретная высота блока, даже падинга нет, значит высота 0, если вынутри нет элементов
Alex
если ты спрашиваешь про картинку
Ler
https://jsbin.com/vufakipaci/1/edit?css,output
Ler
ну вот к page добавляем overflow: hidden и все в порядке
Ler
убираем и все плохо
Ler
что за магия ?)
Бислан
Почитай про Block Formatting Context
https://www.smashingmagazine.com/2017/12/understanding-css-layout-block-formatting-context/
Ler
Хорошо, спасибо )
Alex
clear: both; - сбрасыивает свойства родителя, если кратко
Alex
overflow: hidden скрывает то, что за пределами родителя
Rauf
всем привет может кто нибудь знает плагины типо isotope для реакта ? :(
Rauf
😞😞😞
Бислан
Хорошо, спасибо )
Или вот еще ответ на stackoverflow
https://stackoverflow.com/questions/6196725/how-does-the-css-block-formatting-context-work
Nick
🦜
Rauf
🦜
Rauf
Dima
Всем приятного Аппетита))
Вопрос на что может ругаться Promise.all вот так > 'Argument of Promise.all is not iterable'
И влияет ли это на последующий .this после Promise.all([ тратата]).this(()=>{вот сдесь долженн перебираться объект через консоль перебирается а програмно нет.(( })
Pavel
Maksim
Dima
Pavel
покажи кусок кода
Dima
покажи кусок кода
Promise.all(
queryArreys.map(oneQuery => {
return http.get(oneQuery)
.then(res => {
categorysInBase.forEach((nameOfCategory) => {
temporary[nameOfCategory] = [];
res.articles.forEach((news) => {
news.id = SHA256(Date.now() + news.title);
temporary[nameOfCategory].push(news);
});
});
})
})
.reduce((sequence, chapterPromise) => {return sequence.then(() => {return chapterPromise;})}),
).then(()=>{
for(categorysInBase in temporary){
temporary[categorysInBase].forEach(news=>{
base.saveDBNews(categorysInBase,news);
console.log(categorysInBase,'одна новость добавленна','\n');
});
console.log(categorysInBase,'Полностью завершина','\n');
};
})
.catch(err => console.log(err.message));
Maksim
Anonymous