Вы не можете определить асинхронность программно. Это должно быть ясно из представленного API, потому что, если он асинхронный, то в значительной степени должны быть признаки этого в том, как вы его используете.
Если функция асинхронна, это означает, что она не возвращает результат непосредственно из вызова функции, потому что функция возвращается до того, как результат будет готов. Таким образом, документация для функции должна сказать вам, как получить результат, и если это асинхронное там должна быть другой механизм, такие как:
- функция обратного вызова вы можете передать в
- возвращенного обещание
- своего рода слушатель событий на объекте
- другого механизма уведомления
- изучить код функции
- функции именования, (например, суффикса «синхронизации», что node.js использования)
Если функция напрямую возвращает результат вызова функции, то она синхронна, а другой код Javascript не будет работать во время этого вызова.
Если функция уже не асинхронный, единственный способ превратить это в асинхронной операции, чтобы запустить его в другом потоке или процессе и Маршаллу значение обратно в основной поток (вызов какой-то функции обратного вызова в основном потоке, когда значение будет готово).
Вы не можете этого сделать. Чтобы узнать, подходит ли это подход, нам нужно знать, к чему вы приближаетесь. Зачем вам это нужно программно? – Ryan
Выполняя это программно, я делаю свое исследование, прежде чем сделать запрос функции обратного вызова или потянуть. Если это неблокирующий вызов функции (так как он переходит на некоторые функции уровня системы), то, вероятно, не будет необходимости в обратных вызовах. – srlm
Если бы это был чистый JS, тогда вы, вероятно, могли бы проверить, было ли возвращенное значение обещанием. Однако, поскольку вы используете собственные функции, это может быть невозможно. Следовательно, я должен пойти с @minitech на этом. Вы не можете определить программно, является ли функция асинхронной. –