2015-11-18 3 views
-2

У меня есть функция, и эта функция присутствует в двух JS-файлах. Оба файла загружаются при загрузке страницы. Вот почему эта функция вызывает 2 раза. Мне нужно вызвать это один раз из любого файла. Как только он вызывается из любого файла, он не будет снова звонить. Мне нужно сохранить эту функцию в обоих файлах, не удаляя ее. Кто-нибудь может мне помочь? Благодаря!Как вызвать функцию только один раз

+2

Вы действительно должны опубликовать код функции и способ ее вызова. – Pointy

+1

Ну, очевидный ответ - не дублировать ваш код. Что именно предотвращает это? – David

+0

вот грубая демонстрация https://jsfiddle.net/5ez2968w/ – Bryce77

ответ

1

Как отметили многие комментаторы, вы действительно должны перестроить свой код, чтобы не дублировать его.

Это говорит о возможных взломах. Если вы действительно не можете удалить его, вы можете найти способ сделать свою функцию идемпотентной (по крайней мере, в том смысле, что ее можно вызывать повторно без какого-либо неблагоприятного эффекта). Вы можете использовать булевский флаг, который хранится где-то, который переводится с false на true. Затем в вашей функции вы просто охраняете свои операции с помощью этого флага.

var has_been_called = false; 

function run() { 
    if (!has_been_called) { 
    //the rest of your code 
    has_been_called = true; 
    } 
} 

При первом вызове запускается код, и последующие вызовы не будут выполняться.

+0

Можете ли вы PLS поделиться скрипкой? – Bryce77

+0

@ Bryce77 Это просто простой псевдокод. Но если у вас есть конкретный вопрос относительно моего предложения, я был бы рад разработать. – Chet

+0

Спасибо @Chet !!! – Bryce77

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