JavaScript - обнаружить конец цепочки функций? - PullRequest
1 голос
/ 20 декабря 2009

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

func1('initial data').func2().func3().func4();

И после того, как func2-4 закончит работу с «начальными данными», я бы хотел определить, когда func4 будет выполнен. Поскольку func4 () не всегда является последней функцией в цепочке, то есть, например, она может заканчиваться на .func3 () или .func5 (), или я могу смешивать вызовы функций в зависимости от того, что я пытаюсь сделать Я пытаюсь найти способ обнаружить, что больше не выполняются вызовы функций, но я не захожу слишком далеко.

Ответы [ 3 ]

5 голосов
/ 20 декабря 2009

Вы не можете.

Кроме того, если они не связаны:

var v = func1('initial data');
v = v.func2();
v = v.func3();
v = v.func4();

Что вы считаете последней функцией? Каждая функция - последняя функция в своей цепочке, но если вы завершите что-то после каждого шага, это не сработает.

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

3 голосов
/ 20 декабря 2009

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

executeSequence(func1('init_dat'),[
    'func2',
    'func3',
    'func4'
]);
3 голосов
/ 20 декабря 2009

Традиционный подход заключается в том, чтобы поместить после последней функции все, что вы хотите, после следующей строки:

func1('initial data').func2().func3().func4();
allFunctionsDone();

;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...