Задать вопрос
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Я пробовал, не получается. Переход к блоку с меткой вне области видимости функции не работает изнутри этой функции.
  • Можно ли с помощью php или js прочитать данные файла формата SIG?

    @amg0461
    Скорее всего, упомянутые библиотеки умеют декодировать и бинарные форматы, надо читать документацию к конкретной библиотеке, я просто никогда с этим не сталкивался. Либо можно еще попробовать предварительно перевести подпись из бинарного формата (кажется, один из его вариантов называется PKCS#7) в текстовый с помощью (например) утилиты командной строки openssl (я с ней работал из-под Linux, но не для перекодирования подписей; про Windows ничего про нее не знаю). Могу только посоветовать погуглить что-нибудь типа «как конвертировать PKCS#7 в base64 с помощью openssl».

    Но первое, с чего бы я начал, — попробуйте найти онлайн-сервис для чтения подписей. Я пользуюсь вот этим, но наверняка и другие найдете. Еще на госуслугах тоже вроде бы можно прочитать файл с подписью.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    edward_freedom, использую, конечно. Именно так и пишу, благо в 14-й ноде уже даже есть fsPromises, самому не надо промисифицировать fs.readFile.

    У меня был спортивный интерес, как писали в допромисную эпоху. Понял, что единственный выход — вызвать из моего коллбэка, который внутри fs.readFile, просто внешнюю функцию (вне области видимости моего api), которая сделает всю работу. Но этот вариант и так очевиден.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    edward_freedom, вообще, ответ не по существу вопроса и переход на личности (да еще с тыканьем) — не есть гуд. Но оставим это на вашей совести. Вопрос закрыт.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    перестаньте пудрить нам мозги)

    Роман, прошу вас все-таки не использовать блатную лексику, мы же на интеллигентном ресурсе. Когда я писал про обычный коллбэк, я имел в виду коллбэк внутри fs.readFile, а не функцию вне области видимости моего api. Те варианты, которые вы предлагаете — очевидны, вопрос был, нет ли других вариантов. Ответ уже получен.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    а что с ними так, что ты не понимаешь работу колбеков?

    Вау :) Q&A вроде бы и создан для того, чтобы любой мог спросить, если он чего-то не понимает, и получить ответ по существу, а не упреки в невежестве? Но с механизмом обратных вызовов у меня все в порядке ))

    edward_freedom, я задал конкретный вопрос, но вы упорно отвечаете на другой, про промисы и async/await. Но на свой вопрос я уже получил ответ, что решения нет, так что вопрос закрыт.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    Роман, спасибо, эти три варианта очевидны, но я надеялся, что есть некие возможности, о которых я не знаю.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    Используй await и получай результат функции в переменную.

    edward_freedom, так я же в вопросе написал про await:
    Как написать это с помощью промисов и async/await, я знаю. А как написать это без промисов, с обычным коллбэком?

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

    @amg0461 Автор вопроса
    У меня api должна результат своей работы просто возвращать в точку вызова, а не вызывать еще одну функцию. То, что вы написали, — это решение другой задачи, как эту другую задачу решить, я и сам знаю )) А вот как решить мою? Правильно ли я понимаю, что решения нет?
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    edward_freedom, понятнее не стало :) У меня api должна результат своей работы просто возвращать в точку вызова, а не вызывать еще одну функцию. То, что вы написали — это решение другой задачи, как эту другую задачу решить, я и сам знаю )) А вот как решить мою?
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    А можно подробнее? Этот cb определен вне api? Или как? И что он делает? Мне нужно, чтобы сама функция api что-то возвращала в зависимости результата чтения файла.
  • Как вернуть результат неблокирующего вызова?

    @amg0461 Автор вопроса
    edward_freedom, ничего не понял, если честно. callback у вас — это функция? Она определена за пределами api? И где здесь возвращается строка "none" в случае неудачи?
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    inFureal, не, ну как-то странно в простой ситуации типа
    const parent = () => {
        const child = () => {
            // мы находимся здесь и хотим выйти из parent
        }
    }

    выбрасывать исключения или заводить флаги, которые устанавливать в false, ну и так далее. Хотелось бы, чтобы у функций был нативный метод типа parent.return() и никаких заморочек. Функции в js это же тоже объекты, какого хрена у них в прототипе нет метода return(), который можно было бы применить из любого места области видимости? :)
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Ну я примерно так и делал до того, как промисифицировал коллбэк. Но это же костыль :) Вопрос был в том, а нет ли какого-то нативного способа сразу выйти из внешней функции, находясь во внутренней? Увы, я понял, что нет...
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Алексей 〒., Хорошо, максимально упрощу вопрос, чтобы вам было проще ответить :) Есть функция parent, внутри которой есть функция child. Возможно ли написать в child нечто, что приведет к выходу из parent? Асинхронность тут вообще ни при чем, в моем вопросе она была просто для примера.
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Черт с ними вообще, с обратными вызовами :) Упрощу вопрос: есть функция parent и внутри нее функция child, все абсолютно синхронно, никаких коллбэков. Можно ли, находясь внутри child, сразу выйти из parent?
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Алексей 〒., после вызова fs.readFile, не дожидаясь результата, поток выполнения перейдет к блоку номер 2 и продолжит движение. А мне надо как-то выйти из функции parent по условию внутри коллбэка.

    Я знаю, что такое асинхронность и неблокирующие вызовы :) Речь в вопросе о том, что мы находимся в потоке выполнения внутри функции parent. По событию, вызвавшему коллбэк, при определенном условии мне нужно прервать этот поток выполнения и выйти из parent. Оставим вообще асинхронность в покое: пусть просто внутри parent будет функция child, все абсолютно синхронно. Как мне, находясь в child, инициировать выход из parent?
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Сергей Соколов, async-await это и есть промисификация коллбэка, этот способ я знаю. Ну и дело же не в простыне, а в том, что мне как-то, находясь внутри коллбэка, надо выйти из функции parent. Нужно что-то типа метода parent.return()
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Да, это решение понятно, но это все же какой-то не совсем нативный костыль, обертывать огромные куски кода в функции только ради того, чтобы выйти куда надо из коллбэка.

    По поводу GOTO — метки, естественно, тоже пробовал, не работает ))
  • Как выйти из внешней функции?

    @amg0461 Автор вопроса
    Так это я знаю, но мне не просто коллбэк надо остановить, а перейти к блоку операторов номер 3.