2014-02-03 6 views
0

Привет, у меня есть цикл в JSON, чтобы повторить соединение 3 раза, прежде чем запускать ошибку, однако иногда у меня есть 3-4 запроса JSON, и все они могут пройти через ошибки, поэтому у меня есть 3 оповещения в приложении для мобильных телефонов.navigator.notification.confirm() - стрельба несколько раз

EG.

 

function showJSONerror(xhr, status) { 

     if (xhr.status === 0 && localStorage["TmpAlertShow"] !== true) { 

     navigator.notification.confirm('Connection error.\n Verify your network connection and try again.', confirmAction, 'Woops...','Try Again, Close'); 
     localStorage["TmpAlertShow"] = true; 

     function confirmAction(button) { 

      if (button == 1) { localStorage["TmpAlertShow"] = false; showPage(localStorage["TmpWebView"]) } 
      if (button == 2) { localStorage["TmpAlertShow"] = false; return false; } 

     } 
} 

Я пытаюсь найти способ, чтобы закрыть предыдущее предупреждение с помощью JS или записать насытить если предупреждение уже уволен и не закрыт (предотвратить, чтобы отобразить несколько предупреждений)

Благодаря

ответ

0

Вы можете попробовать что-то вроде установки глобальной переменной, которая представляет собой количество выполняемых в настоящее время запросов, а затем в вашей функции ошибки, скажем, если счетчик больше 0, сохраните результат в глобальном массиве, а если нет, то обработайте ошибки для отображения.

Пример:

var callsRunning = 0; 
var callStatuses = []; 

При выполнении вызова надстройку:

callsRunning++; 

Когда вызов делается:

callsRunning--; 

в вашей функции ошибки:

if(callsRunning > 0) { 
    callStatuses.push(/*whatever you want to collect*/); 
} 
else { 
    /*compile statuses for display of error*/ 
} 
+0

Итак, если я правильно вас понимаю, так это можно сделать? 'code var callsRunning = 0; функция showJSONerror (XHR, статус) { если (xhr.status === 0 && callsRunning> 0) { navigator.notification.confirm ('ошибка соединения. \ П Проверьте подключение к сети и повторите попытку.', confirmAction, 'Woops ...', 'Try Again, Close'); callsRunning ++; функция confirmAction (кнопка) { если (кнопка == 1) {callsRunning--; showPage (localStorage ["TmpWebView"])} if (button == 2) {callsRunning--; return false; } } } ' – user3113040

+0

Кажется, я, возможно, не понял вопроса. Извините –

0

я имел подобную проблему до

я использовал, чтобы разрешить его http://underscorejs.org/#after

может быть, дать этому выстрел?

+0

Да, но это означает, что я должен использовать дополнительную библиотеку наверху, чтобы решить эту проблему:/ – user3113040

+0

вы могли бы просто подражать одному и тому же коду, если это единственная функция, которая вам нужна? – dsymquen

Смежные вопросы