Если вы не используете jQuery в своем коде, этот ответ для вас
Феликс Клинг отлично справился с написанием ответа для людей, использующих jQuery для AJAX, я решил предоставить альтернативу для людей, которые этого не делают.
То, с чем вы столкнулись
Это краткое резюме «Объяснение проблемы» из другого ответа, если вы не уверены, прочитав это, прочитайте это.
A в AJAX означает асинхронность. Это означает, что отправка запроса (или, скорее, получение ответа) вынимается из обычного потока выполнения. В вашем примере .send немедленно возвращается, а следующий оператор return result; выполняется до того, как функция, которую вы передали, когда был вызван обратный вызов success .
Это означает когда вы возвращаетесь, слушатель, который вы определили, еще не выполнил, что означает, что возвращаемое вами значение не было определено.
Вот простая аналогия
Возвращаемое значение a — undefined так как часть a=5 еще не выполнена. AJAX действует так, вы возвращаете значение до того, как сервер получил возможность сообщить вашему браузеру, что это за значение.
Одним из возможных решений этой проблемы является код повторно активно , сообщая вашей программе, что делать, когда расчет завершен.
Это называется CPS . В основном, мы передаем getFive действие, которое необходимо выполнить, когда оно завершается, мы сообщаем нашему кодексу, как реагировать, когда событие завершается (например, наш вызов AJAX или в этом случае время ожидания).
Который должен предупредить «5» на экране. (Fiddle) .
Возможные решения
Существуют два способа решения этой проблемы:
- Сделать AJAX синхронный вызов (позволяет называть его SJAX).
- Реструктурируйте свой код для правильной работы с обратными вызовами.
1. Синхронный AJAX — Не делайте этого !!
Что касается синхронного AJAX, не делайте этого! Ответ Феликса вызывает некоторые веские аргументы в пользу того, почему это плохая идея. Подводя итог, он заморозит браузер пользователя, пока сервер не вернет ответ и не создаст очень плохой пользовательский интерфейс. Вот еще краткое резюме из MDN о том, почему:
XMLHttpRequest поддерживает как синхронную, так и асинхронную связь. В общем, однако, асинхронные запросы должны быть предпочтительнее синхронных запросов по причинам производительности.
Короче говоря, синхронные запросы блокируют выполнение кода . . это может вызвать серьезные проблемы .
Если вы имеете , вы можете передать флаг: Вот как это сделать:
2. Код реструктуризации
Пусть ваша функция принимает обратный вызов. В примере код foo может быть сделан для принятия обратного вызова. Мы сообщим нашему кодексу, как отреагировали , когда foo завершает работу.
Итак:
Становится:
Здесь мы передали анонимную функцию, но мы могли бы так же легко передать ссылку на существующую , чтобы он выглядел следующим образом:
Для получения дополнительной информации о том, как выполняется этот вид обратного вызова, проверьте ответ Felix.
Теперь давайте определим сам foo, чтобы действовать соответственно
(скрипка)
Теперь мы сделали нашу функцию foo принять действие, которое будет выполняться, когда AJAX завершится успешно, мы можем продолжить это, проверив, не является ли статус ответа не 200 и действует соответственно (создайте обработчик сбоя и т. д.). Эффективное решение нашей проблемы.
Если вам все еще трудно понять это , прочитайте руководство по началу работы AJAX в MDN.
Notepad++ — поиск одинаковых вещей, которые находятся в строке дважды
Я хотел бы знать, есть ли способ поиска файла для двух вещей в одной строке. Например, если я хочу найти строку с » variable > = «и «variable>=». Проблема в том, что я не знаю, что такое «переменная» (ну, в файле много разных переменных, и я ищу проверку дубликатов переменных в одной строке).
может кто-нибудь помочь мне с этим?
2 ответов
у вас есть несколько вариантов.
в любом случае перед началом:
- откройте диалоговое окно» найти «(Ctrl + f) или» заменить » (если вы знаете, что вы хотите сделать дальше),
- выберите переключатель «регулярное выражение»в левом нижнем углу диалогового окна.
- здесь, я буду предполагать, что вы ищете дубликаты шаблонов, таких как variable >= something или hour >= NUM .
- кроме того, я в группе как можно больше, так что вы можете позже смогу замените путем держать, или бросать прочь, любую часть как нужно.
(1) Явное Найти
вы знаете дубликаты, и вы можете найти их явно, например:
или, для «час», просто замените слово «переменная» на слово «час»:
объяснение:
каждый набор скобок, слева направо, — это группа. Поэтому, вы будете иметь следование:
Группа 1: ((variable)\s*>=\s*\S+) : находит строку, начинающуюся с» variable», за которой следует \s (пробел) и * означает любое количество пробелов (следовательно, вы можете иметь «variable>=» или » variable> переменная».
Группа 3: (.*) : что-нибудь между двумя дубликатами вы найдете. Это позволяет сделать что-то с этим дополнительным текстом, если он существует.
Предупреждение, если есть трипликаты (или больше), это будет потребитель шаблоны в середине, делая group1 и group4 содержат только первый и последний дубликаты. Если вы хотите найти последовательные дубликаты, то измените эту часть на (.*?) ; the ? делает его не жадным, т. е. найдет минимум . (ничего).
4 группа: (\s*>=\s*\S+) : наконец, это дублировать. Причина его дубликат, потому что узор такой же, как и группы 1, Кроме того, он использует , это просто способ сказать, что находится в группе 2. В данном случае это слово «переменная».
вторая картина для «часа» по мере того как вы увидите идентична, за исключением того, что он ищет «час», а не»переменную».
(2) Найти Неизвестные Повторяющиеся Узоры
С небольшими изменениями, вы можете искать любые дубликаты одного и того же шаблона:
объяснение:
это идентично поиску дубликатов с явно известными именами. Разница здесь заключается в использовании \w+ (любые буквы и слова), а не слово «переменная»/»час».
\w+ : \w соответствует любому символу слова (включая прописные, строчные и цифры, но не знаки препинания или другие символы). The + снова так сказать, по крайней мере, один. Поэтому, с \w+ вы найдете любые буквы слова.
Как удалить дубликаты строк в Notepad++

Вам понадобится плагин TextFX. Раньше он был включен в более старые версии Notepad ++, но если у вас есть более новая версия, вы можете добавить плагин из меню, перейдя в Plugins → Plugin Manager → Show Plugin Manager → Available tab → TextFX → Install. В некоторых случаях его также можно найти введя TextFX, но это одно и то же.

Теперь необходимые флажки и кнопки появятся в меню: TextFX → Инструменты TextFX.
Убедитесь, что установлен флажок «sort lines case sensitive». Затем выберите блок текста (Ctrl + A, чтобы выделить весь документ). Наконец, нажмите sort lines case sensitive (Сортировать строки с учетом регистра) или sort lines case insensitive (Сортировать строки без учета регистра).
При помощи поиска и замены по регулярным выражениям
Выполните поиск с заменой для поиска
Это оставляет из всех повторяющихся строк последнее вхождение в файле.
Для этого не требуется сортировка, и повторяющиеся строки могут находиться в любом месте файла!
Вам нужно проверить параметры «Регулярное выражение» и обязательно удалите отметку с опции поиска “и новые строки”.
Вот подробный вид окна поиска для удаления дубликатов строк в Notepad++: