169 похожих чатов

Народ Есть функция раньше она возвращала массив потом пришлось сделать в ней 2

половинки - через if - синхронную и асинхронную
если true - выполняется синхр код и возвращает массив
если false - выполняется асинк код (асинк IIFE) и возвращает полученный массив
но общего return у функции больше нет
в общем, как обычно - ловлю undefined при вызове этой функции
где я ошибся?
код выложил : https://codepen.io/dimanvaz/pen/NWadoja
———-
блин, как сделать, чтобы функция возвращала объект в любом из случаев
то есть если условие соблюлось - срабатывает return в синхронной половине
если нет - срабатывает в асинхронной

19 ответов

6 просмотров

Не показывайте этот код детям...)

Ayrat- Автор вопроса

не там я ретюрню, чувствую

Ayrat
не там я ретюрню, чувствую

return во внетренней функции на внешнюю никак не влияет Сделайте selectItem нормальной асинхронной функцией

Ayrat- Автор вопроса

у массивов есть много методов кроме forEach, например find

getMatch(isCollection) { return new Promise(async (resolve, reject) => { if(isCollection ){ return resolve(this.items.find(item => item.id === parseInt(this.$route.params.xxx))); } const idParam = +window.location?.hash?.slice(7) || 0; const respObject = await getAPIdata().then(response => response.json()).catch(reject); resolve(respObject.items.find(item => item.id === +idParam)); }); }, async selectItem(){ const match = await getMatch(this.items.length > 0); // ну и дальше что хотите делайте с match }

В чем смысл делать new Promise, почему не использовать async и для getMatch?

Volodymyr Klimov
В чем смысл делать new Promise, почему не использо...

На быструю руку, минимальный рефакторинг

Ayrat- Автор вопроса

надо, чтобы страница отрисовывалась как при переходе на неё с главной, так и при вставлении в урл прямой ссылки на товар.

Если задал такой вопрос, то поменяй источник. Год большое время.

Ayrat- Автор вопроса
Ayrat
надо, чтобы страница отрисовывалась как при перехо...

потом стало понятно, что дело в роутах и парамс. При переходе они есть, при прямой ссылке - нет. Дальше стал делать костыль, чтобы при попадании на страницу по прямой ссылке происходил фетч и из пришедших итемс по строке в урле находился нужный Итем. Для этого прежнюю функцию selectItem() придётся делать "с двойным дном" - одна половина работает, если Итемс есть (то есть перешли с главной). Вторая половина работает, если итемс пустые (то есть юзер идёт по прямой ссылке) - делает фетч, перебирает полученные Итемс на сооветствие куску урла.

Ayrat
потом стало понятно, что дело в роутах и парамс. П...

Еще раз: пользователь заходит на урл вида /goods?goodId=12151 и вам надо сделать запрос по этому goodId на сервер?

Ayrat- Автор вопроса

да

Ayrat
да

const { goodId } = this.$route.params

Ayrat
да

Я ничего не знаю о vue-router, но почти уверен, что там есть возможность посмотреть что лежит в параметрах урла и сделать по ним запрос, в чем именно у вас сложность?

а почему бы не сделать, чтоб она всегда возвращала промис, наоборот)

Ayrat- Автор вопроса
Kirill 🍅 Romanov
а почему бы не сделать, чтоб она всегда возвращала...

потому что всё, что возвращает промис, у меня потом заразит остальной код и он тоже начнёт возвращать пендинги и промисы вместо значений

Ayrat
потому что всё, что возвращает промис, у меня пото...

В чем проблема вызвать асинхронную фукнцию в created и то, что она с сервера получит записать в состояние, к примеру?

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта