2014-01-05 4 views
-1

Можно ли вызвать функцию в javascript и не ждать результатов? У меня много рекурсивных вызовов, и они потребляют много памяти, поэтому я иногда получал «Максимальный размер стека вызовов».Создание асинхронной функции в JavaScript

+3

Можете ли вы показать кусок кода, который вызывает эту проблему, так что мы можем оптимизировать его? – thefourtheye

+3

Вы слишком много рекурсируете. И вы не думаете в правильном направлении, чтобы решить проблему. –

+0

Это не кусок. Я пытаюсь найти альтернативы, поэтому я не занимаюсь рефакторингом. – user1518183

ответ

0

Это невозможно и не связано с ожиданием возврата функции. Проблема, с которой вы сталкиваетесь, заключается в том, что вы вызываете функцию внутри функции.

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

Если вам не нужен результат от функции или нужно дождаться возврата, вам нужна рекурсия.

2

Вы можете использовать

setTimeout(function(){ ..... }, 0 ) 
+0

Это, скорее всего, не касается проблемы ... –

+0

Как насчет того, чтобы позволить плакату определить это. Это очень хорошо может решить проблему –

+0

Я пытаюсь представить любой сценарий, где это поможет, кроме как в сочетании с серьезным рефакторингом алгоритма. Можете ли вы описать один? Но я удалил свой нижний план. –

Смежные вопросы