Как сделать так, чтобы асинхронный вызов JavaScript ajax казался синхронным? - PullRequest
0 голосов
/ 27 сентября 2018

Я использую библиотеку Dhtmlx UI.В их компоненте сетки вы можете проверить входные данные, используя метод OnEdit.Метод предоставляет следующие параметры: rowid, colid, newval, oldval.

Большую часть времени я в порядке, используя метод OnEdit для проверки или ввода неверной информации, в зависимости от того, какой col вызывается, а также newval иОлдваль инфо.Поэтому обычно мой метод OnEdit будет выглядеть примерно так:

function OnEdit(rowid,colid,newval,oldval)
{
  if first test fails return false;

  if second test fails return false;

  etc.

  return true;
}

Возвращение false сбрасывает значение поля в oldval.

Однако для одного конкретного случая мне нужно вернуться на сервер и проверитьпо значению.Если значение отличается от того, что я храню локально, тогда мне нужно вернуть false.Итак, мой пересмотренный метод выглядит следующим образом:

function OnEdit(rowid,colid,newval,oldval)
{
  if first test fails return false;

  if second test fails return false;

  //third test  
  Fetch data from server via async ajax and if different to currval then 
  return false.

  ......
  if nth test fails return false;

  etc.

  return true;
}

Конечно, к моменту, когда третий тест выполняется и завершается, система достигает конца тестов и возвращает true.

Мне нужнознаете, как мне настроить третий тест, чтобы система ожидала результата, прежде чем перейти к «n-му тесту».

1 Ответ

0 голосов
/ 27 сентября 2018

Я думаю, что вы должны установить async: false в опции ajax. Это будет ждать получения ответа от сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...