Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как cоздать собственную ф-цию с обратным вызовом 
:(
    Опции темы
numerovan
Дата 30.8.2010, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Здравствуйте, помогите решить проблему : создать свою функцию с обратным вызовом, т.е. имею ф-ию f1() , каторую буду вызывать после окончании выполнения созданной мною новой функции f2().
PM MAIL   Вверх
ksnk
Дата 30.8.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Откуда берется f2 и/или каким образом она создается? Почему нельзя  в текст создаваемой функции влепить вызов f1?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 30.8.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Цитата(ksnk @ 30.8.2010,  19:40)
Откуда берется f2 и/или каким образом она создается? Почему нельзя  в текст создаваемой функции влепить вызов f1?

Допустим я хочу создать новую функцию
Код

// за ранее подготовленная функция
function myFn_1(){
 ...
}


// новая функция в которой должнj сработать то что внутри прописано и ещё должнj по окончанию выполнения ф-ии myFn_2() выполниться ф-ия myFn_1()
function myFn_2(param, callback){
 // тут разные выполнения
}

как такое сделать ? 
Фукнция создаётся обычным способом. В текст нельзя влепить так как нужно точно знать что myFn_2() выполнила всё что ей сказанно и далее нужно выполнение ф-ии myFn_1(), а не перемешивалось выполнение программы

Это сообщение отредактировал(а) numerovan - 30.8.2010, 19:49
PM MAIL   Вверх
ksnk
Дата 30.8.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Код

function myFn_2(param, callback){
 // тут разные выполнения

 if(callback) callback();
}

?

Это сообщение отредактировал(а) ksnk - 30.8.2010, 20:04


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 30.8.2010, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Цитата(ksnk @ 30.8.2010,  20:03)
Код

function myFn_2(param, callback){
 // тут разные выполнения

 if(callback) callback();
}

?

Спасибо за ответ, но хочу огорчить что есть более правильный подход к этому решению. 
PM MAIL   Вверх
bars80080
Дата 30.8.2010, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 3
Всего: 315



понял ksnksmile и больше так не делай
PM MAIL WWW   Вверх
ksnk
Дата 30.8.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Цитата(numerovan @  30.8.2010,  20:52 Найти цитируемый пост)
Спасибо за ответ, но хочу огорчить что есть более правильный подход к этому решению.

Хотелось бы огорчится.  smile 
Код будет?



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 30.8.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Bars80080 , вроде ты на все вопросы знаешь ответ , помог бы с решением ...
PM MAIL   Вверх
bars80080
Дата 31.8.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 3
Всего: 315



а я не понял вопроса. максимум что можно представить по задаче, так ksnk озвучил качественное решение, я сам таким пользуюсь

послушайте, если просят повторить вопрос, то лучше не пытаться вновь его выразить абстрактными идеями, а описать конкретную задачу.
вот у меня к примеру была такая. написал я универсальную функцию, которая отправляла запросы по аяксу:
ajaxQuery(url, query, method);
возник вопрос, как разбирать приходящий ответ, ведь функции-обработчики каждый раз будут разные. ответ простой, передаём и само имя обработчика:

Код

ajaxQuery(url, query, method, myFunc1);


внутри функции ajaxQuery обработчик вызывается:
Код

function ajaxQuery(u, q, m, f) {
    //...
    rq.onreadystatechange = function() { 
        if(rq.readyState == 4) { if(typeof(f) == "function") { f(rq.responseText); return true; }}}     
    //...
}

то есть при приёме ответа будет вызвана функция myFunc1(rq.responseText)

всё ясно и чётко, работает отлично.
на твой вопрос могу предложить только это, то есть тот же самый пример ksnk
PM MAIL WWW   Вверх
numerovan
Дата 4.9.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



в jQuery есть функция, допустим, fadeOut() , сами знаете что на обёрнутый набор элементов она "растворяет" их , к примеру
 
Код

$("#id").fadeOut("normal", function(){ alert(); // вот alert , каторый вызывается по завершении fadeOut});
 
и сколько бы я времяни не поставил на растворение объекта, я точно знаю что по завершению вызовиться Alert. 


Вопрос: как разработчики организовали возможность обратного вызова функции в функции ?
PM MAIL   Вверх
bars80080
Дата 4.9.2010, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 3
Всего: 315



Цитата(numerovan @  4.9.2010,  00:25 Найти цитируемый пост)
как разработчики организовали возможность обратного вызова функции в функции ? 

это свойство javascript. а разработчики fadeOut тут не причём, они просто пользуются тем что есть

называется это - вызов анонимной функции, то есть без имени. странно, что ты ранее этим не пользовался

что мешает тоже самое сделать для своего метода/функции?
PM MAIL WWW   Вверх
ksnk
Дата 4.9.2010, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Цитата(numerovan @  4.9.2010,  00:25 Найти цитируемый пост)
Вопрос: как разработчики организовали возможность обратного вызова функции в функции ? 

Будешь смеятся, но примерно так как я уже писал ;)
Это и был огорчительный для меня пример?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 4.9.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Цитата

что мешает тоже самое сделать для своего метода/функции?

вот я и хочу так сделать
Цитата

Это и был огорчительный для меня пример?

помоему тут нужно ещё подумать ...
Так значит приходим к выводу что подобное делается так как сказал ksnk ?
Код

function myFn_2(param, callback){
 // тут разные выполнения
 if(callback) callback();
}

Хотите сказать что если написать подобное
Код

function myFn(a, b){
      if(b) b();
      // разные действия
}

функция b() выполниться в последнию очередь ? Помоему нет. Даже если и так
Код

function myFn(a, b){
      // разные действия
      $("#id").fadeOut("10000");
       if(b) b();
}

она не вызовиться последней, в данном примере функция myFn выполнит $("#id").fadeOut("10000"), начнётся затухание, после выполнит ф-ию b(), а когда пройдёт 10 секунд то тогда ф-ия myFn закончит свою работу ... Я бы хотел сделать в следующем порядке, чтоб вначале закончилась ф-ия $("#id").fadeOut("10000"), хоть и 20 секунд бы стояло, то после чтоб запустилась ф-ия b()
PM MAIL   Вверх
ayax2005
Дата 4.9.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 17.4.2008
Где: Питер

Репутация: 2
Всего: 11



Два раза перечитал тему с самого начала.
Уважаемый, numerovan, вам бы определиться чего вы хотите добиться и зачем, а уже потом людям моск и3ь.


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
ksnk
Дата 4.9.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



если предварительно почитать описание функции fadeOut, то можно заметить у нее несколько параметров, кроме первого и методом не очень сложного умозаключения породить примерно такой код
Код

function myFn(a, b){
      // разные действия
      $("#id").fadeOut("10000", function(){ 
           if(b) b();
      });
}

Правда после того, как оно заработает, неплохо бы почитать что-нибудь про замыкания, иначе непонимание будет расти и мешать развитию  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 8.9.2010, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



тема ещё не закрыта ... я представлял себе на подобие конструктора и деструктора, в качестве деструктора, служила бы та функция про которую я писал ... Прошу прощения, если я что-то не правильно написал ... будем двигаться дальше.
PM MAIL   Вверх
doook
Дата 8.10.2010, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.5.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Тему уже пора закрывать, тут  я нашёл ответы на все вопросы =) 
numerovan если что то не понят спроси меня может у меня получится тебе объяснить?  smile 
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.1339 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.