Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вызов метода return для функции-родителя (https://javascript.ru/forum/misc/2602-vyzov-metoda-return-dlya-funkcii-roditelya.html)

evgen28 21.01.2009 16:25

вызов метода return для функции-родителя
 
Привет всем!Вопрос такой:
Есть функция
function Ok()
{
...
...
var myQueue = new Request.Queue();
myQueue.onSuccess = function(){
//Здесь при возникновения события надо
//сделать return true,только для функции Ok()
}
...
...
}

внутри нее создается объект myQueue (из mootools). Надо при возникновении события myQueue.onSuccess возвращать return true для функции Ok().
Пробовал разные варианты, более менее подходящий по смыслу из которых
var self=this
myQueue.onSuccess = function(){
with(self){
return true;
}
}
но ничего не помогло.Событие само срабатывает, а в Ok() ничего не возвращается! Помогите кто чем может!Заранее спасибо!

Kolyaj 21.01.2009 16:34

Когда сработает событие onSuccess, return уже случится.

evgen28 21.01.2009 16:48

Не понял Вашего ответа. Когда сработает событие(метод) onSucces объекта myQueue случится выполнение функции
function(){
with(self){
return true;
}
}
по идее в теле функции в данном случае оператор
with должен применить к объекту self блок { return true;} и записать в результат родительской функции function Ok() значение true, но этого не происходит ,и ,видимо, оператор return true срабатывает для метода myQueue.onSuccess. Что делать то надо?

Kolyaj 21.01.2009 17:02

Цитата:

Сообщение от evgen28
Не понял Вашего ответа.

function Ok() {
...
...
  var myQueue = new Request.Queue();
  myQueue.onSuccess = function(){
    // чем выполнится это место
  }
  // Вот это место выполнится раньше
  ...
  ...
}

evgen28 21.01.2009 17:12

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

function Ok() {
...
...
var returner = false;
var myQueue = new Request.Queue();
myQueue.onSuccess = function(){
returner= true; }


...
...
while(!returner){
setTimout('',1000);
}
return true;
}
Правда так вешается сценарий... :(
Есть какие-нибудь предложения?

Kolyaj 21.01.2009 17:56

Цитата:

Сообщение от evgen28
while(!returner){
setTimout('',1000);
}

Ого. Я бы тоже повесился.

Цитата:

Сообщение от evgen28
Есть какие-нибудь предложения?

Почитать про асинхронное программирование. На этом сайте много полезных статей.

x-yuri 21.01.2009 21:41

зачем тебе нужно, чтобы именно Ok получила результат?
расскажи о задаче более высокого уровня
функция Ok - не родительская, она разве что "родительская"

PsychodeliC 22.01.2009 03:33

обалдеть завернул, слушай, x-juri, мы можем иметь общих знакомых по николаескому политеху?

evgen28 22.01.2009 10:06

Короче все понятно!Если не можете ответить на вопрос, то не надо отправлять на форумы и читать литературу-это и без Ваших рекомендаций понятно!Чё за люди?Приходишь с прямым вопросом, а они ходят все вокруг да около, да еще пытаются показать какие они умные!
ГРАЖДАНЕ! ФОРУМЫ ДЛЯ ТОГО И СУЩЕСТВУЮТ, ЧТОБЫ ПОМОЧЬ ДРУГИМ ЛЮДЯМ РАЗОБРАТЬСЯ! А ТЕШИТЕ СВОЕ САМОЛЮБИЕ И ПОКАЗЫВАЙТЕ СВОЮ ГНУСНОСТЬ ПОЖАЛУЙСТА ДОМА!А ТО ЧТО НЕ ФОРУМ, ТО УМНИКИ!СОЦИУМ,БЛИН!!!

evgen28 22.01.2009 10:10

А надо мне это, потому что правлю FCKEditor,добавляю туда дополнительные свойства и события, привяываю к нему mootools и БД. Функция Ok()- это функция закрытия окна настройки элементов FCKEditor. И срабатывать она должна после выполнения очереди запросов. Иначе запросы могут не обновить инфу в БД.


Часовой пояс GMT +3, время: 19:24.