Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2014, 15:04
Аспирант
Отправить личное сообщение для voral Посмотреть профиль Найти все сообщения от voral
 
Регистрация: 03.10.2014
Сообщений: 67

"не блокирующий" alert
Есть необходимость прервать действие скрипта(показав сообщение), пока пользователь не сказал "поехали" (нажал кнопку ок). При этом код нельзя разделять на отдельные части/функции. Т.е. в принципе решение такое в рамкахс странички действует как мне надо:
funcion fooo(){
  console.log('step1');
  alert('waiting');
  console.log('step2');
}

Проблема в том, что пока открыто окно алерта неполучается открыть другую вкладку браузера, а мне эта возможность нужна.

Пока в идее показать некий div c кнопкой. А после загнать в цикл пока некая глобальная переменная не примет занчение, например, true. Соответсвенно менять ее нажатием при клике в открытом блоке.

Но, что то мне эта идея кажется велосипедной. Есть какое либо решение по феншую?
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2014, 15:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Цитата:
При этом код нельзя разделять на отдельные части/функции.
Это высосанное из пальца говнокодерское условие. Код надо разделять на отдельные части/функции.
Пока вы это не поймёте - вам нечего делать в программировании.

P.S. Ответ на конкретный вопрос: решения кроме уё*ного вечного цикла загружающего процессор пользователя на 100%, либо alert\confirm\prompt - нет. И не будет, ибо противоречит парадигме языка.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2014, 15:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от voral
А после загнать в цикл пока некая глобальная переменная не примет занчение, например, true.
А как она примет такое значение, если браузер будет исполнять твой цикл? JS то однопоточный.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2014, 15:29
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Если есть поддержка генераторов, то можно использовать yield, гуглится на раз.

Цитата:
И не будет, ибо противоречит парадигме языка.
Уже есть yield
__________________
kobezzza
code monkey
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2014, 15:33
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от danik.js Посмотреть сообщение
А как она примет такое значение, если браузер будет исполнять твой цикл? JS то однопоточный.
Ну, подобие потоков делается на основе генераторов.

Пример с использованием Collection и интервального слипа потока

$C([true]).forEach(function () {
    this.sleep(1e3, function () {
        if (тут наше условие) {
            return true; // Отменяем цикличный sleep
        }
    }, true);
}, {thread: true});
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 28.10.2014 в 15:43.
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2014, 15:38
Аспирант
Отправить личное сообщение для voral Посмотреть профиль Найти все сообщения от voral
 
Регистрация: 03.10.2014
Сообщений: 67

Сообщение от danik.js
JS то однопоточный.
Ох. черт что, то я упустил из виду...... Придется два браузера юзать.
[OFF]
Aetae, позвольте мне самому решать кем быть с учетом моего стажа - мне поздно куда либо сваливать. Если "код разбивать" это приведет к значительному усложнению функционала. Вы ж не знаете, что я делаю и зачем мне это нужно. За юзеров не волнуйтесь, поскольку это нужно только мне. Я фигею с таких недоэкстрасенсов.
[/OFF]
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2014, 15:38
Аспирант
Отправить личное сообщение для voral Посмотреть профиль Найти все сообщения от voral
 
Регистрация: 03.10.2014
Сообщений: 67

kobezzza, спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 28.10.2014, 15:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Сообщение от kobezzza Посмотреть сообщение
Уже есть yield
yield это всё же иное.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 28.10.2014, 15:52
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от Aetae Посмотреть сообщение
yield это всё же иное.
Ну почему? Он позволяет делать потоки, делать слипы, и приводить асинхронные операции в псевдосинхронные, великая вещь!
__________________
kobezzza
code monkey
Ответить с цитированием
  #10 (permalink)  
Старый 28.10.2014, 15:53
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

...а будет применяться для говнокода -_-.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему пустой alert? Saibot1344 Элементы интерфейса 18 22.01.2013 23:46
Безопасность клиентского кода. BallsShaped Общие вопросы Javascript 35 29.10.2012 17:20
Таймер обратного отсчета на Alert moorzilla Общие вопросы Javascript 2 27.05.2012 22:14
alert!!! как быть с alert???? gooody jQuery 2 19.02.2010 21:44
alert () вместо sleep () artemiusgreat Общие вопросы Javascript 1 14.11.2008 14:06