Я использую продукт под названием DHTMLXGrid, который представляет собой библиотеку JS для создания таблиц в виде электронных таблиц на веб-странице.
Когда я редактирую ячейку и затем щелкаю за пределами ячейки, запускается событие (они называют его onCellEdit), и я делаю вещи для обработки этого события - вызов AJAX для сохранения данных ячейки в БД.
Но если пользователь редактирует ячейку и щелкает кнопку за пределами сетки, которая запускает какой-то другой JavaScript, обработчик onCellEdit не имеет возможности работать до запуска нового кода JS. Не вдаваясь в детали, это все портит.
Итак, у меня есть «Код сетки» и «Код кнопки», и я хочу, чтобы код кнопки ждал, пока код сетки не будет выполнен.
Поэтому я попытался вставить глупый метод sleep () в начале выполнения кода Button. Я ошибочно думал, что это даст возможность запустить Grid-код. Но это предполагает многопоточность, которой, конечно, у нас нет. В результате выполнение всего кода JS было приостановлено, и мой код кнопки все еще выполнялся до кода Grid.
Таким образом, общая проблема заключается в том, что нажатие кнопки удаляет фокус с ранее выбранного элемента. И щелчок, и изменение / размытие являются событиями. Я хочу, чтобы событие размытия обрабатывалось до события щелчка. Кажется, происходит обратное. Я предполагаю, что в чистом JS это будет работать таким образом (я не пробовал), но это сложная библиотека, которая делает свое дело.
Итог - есть ли способ, которым я могу асинхронно приостановить мой код кнопки, чтобы завершить мой код сетки, а затем перейти к коду кнопки?
Спасибо
Пол