Misha Kulakovsky
осталось придумать как это обойти, может cors-хедера какого-то нехватает
Misha Kulakovsky
нашел, output.crossOriginLoading: 'anonymous' в конфиг
Misha Kulakovsky
спасибо что выслушали
Misha Kulakovsky
ха, еще прикол: хендлер не отрабатывает если консоль открыта
Misha Kulakovsky
Ладно, посоветуйте тогда как решить проблему архитектурно: контроллеры дергают методы класса Api, которые в свою очередь делают xhr, возвращая промис некоторые контроллеры вешают на промис .catch и знают что делать в случае ошибки некоторые контроллеры не знают что делать в случае ошибки и я хочу чтобы в таком случае приложение падало, выводя ошибку в окно браузера я не могу триггерить падение в .catch внутри Api т.к. не знаю, будет ли или не будет прицеплен .catch в конструкторе глобально ловить реджект как видите проблемно что делать? вешать catch через setImmediate, чтобы он в конец списка попал чтоли?
hlomzik
не понимаю проблемы. chainable жи
Misha Kulakovsky
мне нужно чтобы логика в catch, который внутри, сработала только если не вешается catch снаружи
hlomzik
есть возможность посмотреть, что внутри апи? (описания обработки нет, как я понимаю). если апи обрабатывает исключение и не пробрасывает его дальше по цепочке, то твой .catch не вызовется
Misha Kulakovsky
в том и проблема — апи не знает, надо ли пробрасывать или нет. зависит от логики в контроллере
Kanat
можете закоментить код ? Как все там работает и описать коментом?
Misha Kulakovsky
Вот такой абстрактный пример набросал, думаю с axios все знакомы. Суть в том что приложение должно падать на ошибках: 1) сохранение айтема, 2) получение айтема если это не 404-я ошибка
Misha Kulakovsky
(например сервер упал, т.е. 500-я)
Misha Kulakovsky
если же делаем getItem и нам приходит 404, мы падать не должны
Misha Kulakovsky
И да, в другом контроллере, скажем, может быть нормальным 410 ошибка, но 404 является фатальной. Пример абстрактный, в реальной же ситуации используются собственные ID ошибок.
Misha Kulakovsky
Ну а вопрос в том, как собственно определить isFatal
Дима
Мне сейчас честно лень вчитываться в твою проблему, но вообще это уже не промис
Дима
Это выглядит как место для middleware
Дима
Юзер вставляет свой обработчик и творит что ему там надо, если ошибку не перехватывает — она пролетает дальше в твой код
Egor
Ну а вопрос в том, как собственно определить isFatal
А оборачивание ошибок в свой класс не поможет их отличать?
Misha Kulakovsky
офигительные истории
Misha Kulakovsky
и как вы предлагаете это сделать?
Misha Kulakovsky
прокидывать в вызов Api колбек, как в старые добрые?
Misha Kulakovsky
я сформилирую еще проще: нужно ко всем промисам добавлять глобальный .catch() в конец цепи, как это сделать?
Дима
И промисами тогда не пользуйся, они же тоже заставляют кал бэк прокидывать
Misha Kulakovsky
это точно чат про js?
andrei
как пропатчить... кхм-кхм
anoru
это точно чат про js?
Спокойнее, тебе уже дали ответ
Артём
Народ, какой сейчас фронтэнд стек технологий нужно знать чтобы комфортно чувствовать
Ale
главный девиз это "не тот, что вчера"
Артём
А то смотрю и куча всего
Артём
Всякие gulp bower npm и куча библиотек
Дима
Самое смешное, что всё перечисленное уже тоже устарело 😄
anoru
лол
anoru
Ну, npm все же нет. Yarn не очень
Дима
Ну так то да
Igor
setInterval(action(c1), 3); замени на setInterval(function() { action(c1)} , 3);
Anonymous
Жуткая
\o \o
Михаил
Почитал, что такое реакт, оказывается такую штуку я сейчас пишу.
Ερμής
Сейчас бы писать на реакте и не знать что это реакт
anoru
О господи, ну в js чате хотя бы не напоминайте о шургиной, достало
Egor
Сейчас бы писать на реакте и не знать что это реакт
Речь вроде не писать на реакте, а писать реакт ;)
Михаил
Ага, писать. Зачем брать готовое, если можно написать свое.
Артём
Ну и нафиг весь этот зоопарк из библиотек тогда. Пока одно освоишь выйдет другое и то что учил уже устарело
Артём
Вон java или c++ 20-30 лет без этой кучи и норм
Михаил
Ну так учить надо не библиотеки, а логику. Она никогда не устаревает и даже к языкам не привязана.
Артём
А это вот для чего bower gulp
Артём
Еще сасс лесс
Артём
И прочее
Артём
Разработку может и ускорит. Но пока освоишь весь этот набор, жизнь пройдет мима тебя
Артём
В поход с палаткой или лесс саасс учить ммм что же выбрать
Oleg
В лесу учить тоже можно
Артём
Там не до этого)
Михаил
Подскажите по SQL. Хочу сделать чат, того же формата как в телеграмме. На первый взгляд в таблице с сообщениями можно сделать один глобальный message_id, но не понятно, как тогда нормально получать часть сообщений, например с -20 до -10. Или только добавление message_chat_id - номер сообщения в чате решит проблему.
Артём
Всмысле чтобы при заходе в чать. Диалоги подгружались?
Михаил
Всмысле чтобы при заходе в чать. Диалоги подгружались?
Не при заходе в чат, тут можно запросить последние 10 сообщений. А при запросе более ранних сообщений.
Misha Kulakovsky
тебе нужно добавить dialog_id
Артём
(кол-во сообщение, все сообещния) - N(кол-во сколько выводим в порции). Т.е всего сообщений 100, нужно выводить по 10, 100-10 = 90. Вот отсюда и выводи limit 90, 100, потом 50, 60 и тд
Misha Kulakovsky
зачем считать общее кол-во сообщений?
Артём
чтобы порциями точно выводить
Misha Kulakovsky
дба на вас нет...
Ivan
кейс использованаия такой, что ты всегда подгружаешь последние, а потом скроллишься по истории. Для скроллинга у тебя есть маркер, от которого грузить.
Артём
причем здесь ид, подгуружать старые сообщения обычным лимитом
Артём
арфметикой указатель переносишь откуда начинать вывод и до куда
Misha Kulakovsky
table messages (id int, chat_id int, author varchar, message text); открываешь чат — грузишь последнее select * from messages where chat_id = :chatID order by id desc limit 100 подгружаешь более ранние, у клиента уже есть сообщения, из них берешь самый маленький ид: select * from messages where chat_id = :chatID and id < :minMessageID order by id desc limit 100
Ivan
Select * from messages where messageId > $marker LIMIT N
Ivan
messageId < $marker
Ivan
арфметикой указатель переносишь откуда начинать вывод и до куда
не нужна там никакая арифметика. Нужно знать от какого сообщения сколько грузить
Михаил
Да, что-то я протупил, что можно взять WHERE от самого маленького id. Так и сделаю.
Артём
юзер зашел в чат, ему загрузились предыдущие сообщения. Запоминаем ид. То что далее напишут - не важно. Если он доскроллир до верха или нажал кнопку загрузить старые, от того id-10(порция) = x. и вывод limit x, id
Артём
id первого сообщения которое подгрузилось
Misha Kulakovsky
ты подразумеваешь что сообщения должны идти в хронолигческом порядке, и упускаешь более простой путь
Misha Kulakovsky
в моем примере видишь сортировка в обратном
Misha Kulakovsky
таким образом можно просто указывать лимит, без оффсета
Misha Kulakovsky
а развернуть порядок потом в приложении можно
Misha Kulakovsky
это намного производительнее, оффсет заставит базу бегать по диску гораздо больше чем нужно