Не работает расширение против callback hell через комментарий /*async!*/



  • Помнится ранее в темах обсуждалось что ! и /*async!*/ это синонимы с версии 16, что очень удобно для редактирования кода в IDE без красных простыней:
    https://community.bablosoft.com/topic/792/расширение-против-callback-hell/22
    https://community.bablosoft.com/topic/10824/поддержка-javascript-правильно-добавить

    Попробовал на своем коде и это не работает.
    Например проект с одним действием выполнить код в котором одна строка

    load("google.com")/*async!*/
    

    или

    sleep(1000)/*async!*/
    

    Выдает ошибку

    Thread #1 : Callback is empty. Did you forget to use '!' after function?
    

    Т.е. в данном случае не сработало расширение и не подставило коллбэк функцию.
    Либо я что то неправильно делаю, либо комментарий /*async!*/
    был заменен на какой то другой либо вообще выпилен из актуальных версий. Т.к. доступа к исходникам сейчас не имею, прошу подсказать может кто то в курсе про эту тему либо это баг.



  • @totorid814 said in Не работает расширение против callback hell через комментарий /*async!*/:

    Помнится ранее в темах обсуждалось что ! и /*async!*/ это синонимы с версии 16, что очень удобно для редактирования кода в IDE без красных простыней:
    https://community.bablosoft.com/topic/792/расширение-против-callback-hell/22
    https://community.bablosoft.com/topic/10824/поддержка-javascript-правильно-добавить

    Попробовал на своем коде и это не работает.
    Например проект с одним действием выполнить код в котором одна строка

    load("google.com")/*async!*/
    

    или

    sleep(1000)/*async!*/
    

    Выдает ошибку

    Thread #1 : Callback is empty. Did you forget to use '!' after function?
    

    Т.е. в данном случае не сработало расширение и не подставило коллбэк функцию.
    Либо я что то неправильно делаю, либо комментарий /*async!*/
    был заменен на какой то другой либо вообще выпилен из актуальных версий. Т.к. доступа к исходникам сейчас не имею, прошу подсказать может кто то в курсе про эту тему либо это баг.

    Процитирую разработчика:

    Писать такой код крайне не рекомендуется. Под "такой" я имею ввиду писать код целиком с использованием внутренних расширений БАС. Это приводило не раз и приведет в вашем случае к ошибкам, которые очень трудно выловить и исправить.
    

    так как ни до кого не доходит с первого раза, у меня есть ещё один ответ разработчика по этому вопросу:

    Я могу только повторить. Писать используя данный функционал не рекомендуется. Это неизбежно приведет к ошибкам, которые редко повторяются и исправляться поддержкой не будут. Если нужно писать код на js, используйте node.js
    


  • Писать такой код крайне не рекомендуется. Под "такой" я имею ввиду писать код целиком с использованием внутренних расширений БАС. Это приводило не раз и приведет в вашем случае к ошибкам, которые очень трудно выловить и исправить.
    

    Это понятно, никто не собирается весь код писать на JS. Но ранее обсуждалось что /*async!*/ это эквивалент !

    Если смотреть исходники здесь https://github.com/bablosoft/BAS/blob/955f5a41bd004bcdd7d19725df6ab229b911c09f/Engine/preprocessor.cpp то так оно и есть, эта строка кода делает это:

    Res = Res.replace(")/*async!*/",")!");
    

    но на гитхабе они не обновлялись уже несколько лет, и как сейчас там дела обстоят непонятно. В новостях по всем релизам не нашел информации что это было выпилено, поэтому и спрашиваю.

    Вопрос простой эта возможность выпилена из BAS на данный момент или же изменена? Можно как то получить доступ к текущим исходникам preprocessor.cpp не покупая платную версию?



  • @totorid814 said in Не работает расширение против callback hell через комментарий /*async!*/:

    preprocessor.cpp

    Там есть строка Res = Res.replace(")/async!/",")!");
    Но это вроде не работает, весь код не читал ибо не надо )))



  • @totorid814 said in Не работает расширение против callback hell через комментарий /*async!*/:

    Res = Res.replace(")/*async!*/",")!");
    

    Данная строка была удалена из кода в апреле этого года, с версиями до 22.6.0 всё должно работать.


Log in to reply