Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как приостановить выполнение функции... / 22 сообщений из 22, страница 1 из 1
13.11.2012, 16:52:52
    #38036624
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
Есть функция, которая возвращает true или false.
В ее конце перед ретурном по условию true или false выполняется еще одна ф-я с callback ф-ей:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
func(..., fгnction (){...})
if (.....)
{
return true;
}
else
{
return false;
};



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

Как мне это сделать?

Спасибо
...
Рейтинг: 0 / 0
13.11.2012, 16:56:39
    #38036634
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasikВ ее конце перед ретурном по условию true или false выполняется еще одна ф-я с callback ф-ейречь про jquery.ajax(), я правильно догадался?
...
Рейтинг: 0 / 0
13.11.2012, 17:01:12
    #38036647
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
кроме ajax, есть множество других ф-й с колбэк вызовами...
Эта не суть, суть описана выше!
...
Рейтинг: 0 / 0
13.11.2012, 17:03:35
    #38036658
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
разработчики jquery.ajax() такую возможность предусмотрели
а разработчики неизвестной функции, скорее всего, нет
...
Рейтинг: 0 / 0
13.11.2012, 17:30:23
    #38036728
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasikи мне нужно что бы после функции func выполнение приостановилось до окончания выполнения данной ф-и.

Как мне это сделать?зависит от того, что в func.
если там нет действительно асинхронных вызовов, а каллбак вызывается напрямую, то это всё отработает до упомянутого return с условием.
в противном случае, придется немного переделать код.
...
Рейтинг: 0 / 0
13.11.2012, 17:34:12
    #38036738
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
Я тоже думаю, что вопрос не описан полностью и корректно.
callback не подразумевает однозначного асинхронизма, а так как js у браузеров однопоточный, то может просто ждать, когда выполнится внутренняя функция?
В противном случае - реализовывать механизм, аналогичный механизму ajax - делать флаг в видимости обеих функций и при обращении проверять его. Еще путем деления функции на часть "до" коллбека и "после". Но однозначно ответить сложно, так как задача нормально не поставлена.
...
Рейтинг: 0 / 0
13.11.2012, 17:35:37
    #38036747
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
IDVsbruckВ противном случае - реализовывать механизм, аналогичный механизму ajax - делать флаг в видимости обеих функций и при обращении проверять его.О каком флаге речь?
...
Рейтинг: 0 / 0
13.11.2012, 17:40:06
    #38036762
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
У ajax? - Поле state у объекта XMLHttpRequest, который делают видимым и доступным для всех участников процесса (scope у него может быть не глобальным, но таким, чтобы зависимые функции доступились).
...
Рейтинг: 0 / 0
13.11.2012, 17:49:22
    #38036791
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
IDVsbruckУ ajax? - Поле state у объекта XMLHttpRequest, который делают видимым и доступным для всех участников процесса (scope у него может быть не глобальным, но таким, чтобы зависимые функции доступились).Не state, а readyState. И это не флаг, а атрибут, что может принимать одно из нескольких (если быть точнее, то пяти) значений :)
Всё равно не понимаю, что Вы предлагаете. Между func и if воткнуть while что-ли?
...
Рейтинг: 0 / 0
13.11.2012, 17:50:04
    #38036793
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
мне и нужно что бы браузер ждал пока не выполнится функция func и тут уже даже будет не так и нужна колбэк ф-я, но по видимому реализовано через синхрон, и поэтому код идет дальше и получается наслоение, еще не закончилась одна фаза начинается следующая.
...
Рейтинг: 0 / 0
13.11.2012, 17:51:57
    #38036798
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
Между func и if воткнуть while что-ли?

подвесит браузер и все...
...
Рейтинг: 0 / 0
13.11.2012, 17:56:14
    #38036807
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasik,

раздели вызывающий код на части: "до" каллбека и "после", как тут уже предлагалось.
...
Рейтинг: 0 / 0
13.11.2012, 17:59:03
    #38036808
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasikмне и нужно что бы браузер ждал пока не выполнится функция func и тут уже даже будет не так и нужна колбэк ф-я, но по видимому реализовано через синхрон, и поэтому код идет дальше и получается наслоение, еще не закончилась одна фаза начинается следующая.Есть такое понятие deffered. Метод jQuery.ajax возвращает deffered-объект. А при помощи последнего можно выстроить цепочку вызовов.
...
Рейтинг: 0 / 0
13.11.2012, 18:04:51
    #38036819
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
а если это не "Метод jQuery.ajax"??
...
Рейтинг: 0 / 0
13.11.2012, 18:44:12
    #38036852
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasikа если это не "Метод jQuery.ajax"??1. Ключевые слова - это "Метод возвращает deffered-объект";
2. Если не ajax и при этом асинхронная операция, то что? Любопытно.
...
Рейтинг: 0 / 0
13.11.2012, 18:48:42
    #38036857
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
skyANA2. Если не ajax и при этом асинхронная операция, то что? Любопытно.setTimeout
FileReader
WebSocket
IndexedDB
WebWorker
обработка события (например, onclick, или onload картинки)

вроде ничего не забыл..
...
Рейтинг: 0 / 0
13.11.2012, 18:56:17
    #38036868
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
Яростный Меч, я хотел услышать ответ от ТС, зачем Вы ему подсказали?
...
Рейтинг: 0 / 0
14.11.2012, 11:01:55
    #38037513
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
я не на экзамене, что бы мне подсказывать!

Я разделил функции, получилось следующее(не совсем рабочее):
сначала опищу вообще все иерархию -

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
function func1()
{
  if (!func2())
  {
    return;
  }

  ....  
 <код>
};

function func2()
{
  ...
  func(..., func3)
  <код окончен>
};

function func3()
{
  ...
  if (...)
  {
    ...
    return true;
  }
  else
  {
    ...
    return false;
  };
};



в первоначальном виде было, что func2 возвращала флаг и определяло идти дальше по коду func1 или нет, но после разделение, я
ушел от того контекста? и как мне теперь возвратить нужный флаг в func1?
...
Рейтинг: 0 / 0
14.11.2012, 11:13:04
    #38037541
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
Все понял: перенести func1 в func3 вместо return true
...
Рейтинг: 0 / 0
14.11.2012, 11:18:58
    #38037549
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
Но возникает "проблема", если нужно передать параметры в func3...

Выход только использовать глобальные переменные назначающие нужное значение в func2, которая будет уже параметрическая. так?
...
Рейтинг: 0 / 0
14.11.2012, 14:10:05
    #38037968
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasikЕсть функция, которая возвращает true или false.
В ее конце перед ретурном по условию true или false выполняется еще одна ф-я с callback ф-ей:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
func(..., fгnction (){...})
if (.....)
{
return true;
}
else
{
return false;
};



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

Как мне это сделать?
Как вариант...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function func(..., pFunct) {
   var type;
   if (.....) {
      type=true;
   } else {
      type=false;
   };
   pFunct;
   return type;
};
...
Рейтинг: 0 / 0
14.11.2012, 14:10:59
    #38037973
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как приостановить выполнение функции...
kasikя не на экзамене, что бы мне подсказывать!
Тогда что нам с тобой делать?
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как приостановить выполнение функции... / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]