Строка прерывания на вкладке ввода [дубликат]

Вместо того, чтобы бросать код на вас, есть два понятия, которые являются ключом к пониманию того, как JS обрабатывает обратные вызовы и асинхронность. (это даже слово?)

Модель цикла события и параллелизма

Есть три вещи, о которых вам нужно знать; Очередь; цикл события и стек

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

while (queue.waitForMessage()) {
   queue.processNextMessage();
}

Как только он получает сообщение для запуска чего-то, он добавляет его в очередь. Очередь - это список вещей, которые ждут выполнения (например, ваш запрос AJAX). Представьте себе это так:

 1. call foo.com/api/bar using foobarFunc
 2. Go perform an infinite loop
 ... and so on

Когда одно из этих сообщений будет исполнено, оно выталкивает сообщение из очереди и создает стек, стек - это все, что нужно выполнить JS для выполнения инструкции в сообщение. Таким образом, в нашем примере ему говорят позвонить foobarFunc

function foobarFunc (var) {
  console.log(anotherFunction(var));
}

. Так что все, что foobarFunc должно выполнить (в нашем случае anotherFunction), будет вставлено в стек. исполняемый, а затем забытый - цикл события затем переместится на следующую вещь в очереди (или прослушивает сообщения)

. Главное здесь - порядок выполнения. Это

КОГДА что-то будет запущено

Когда вы совершаете вызов с использованием AJAX для внешней стороны или выполняете любой асинхронный код (например, setTimeout), Javascript зависит от ответ, прежде чем он сможет продолжить.

Большой вопрос, когда он получит ответ? Ответ в том, что мы не знаем, поэтому цикл событий ждет, когда это сообщение скажет: «Эй, забери меня». Если JS просто ждал этого сообщения синхронно, ваше приложение замерзнет, ​​и оно сосать. Таким образом, JS продолжает выполнение следующего элемента в очереди, ожидая, пока сообщение не будет добавлено обратно в очередь.

Вот почему с асинхронной функциональностью мы используем вещи, называемые обратными вызовами. Это похоже на обещание буквально. Как и в I , обещание что-то вернуть в какой-то момент jQuery использует специальные обратные вызовы, называемые deffered.done deffered.fail и deffered.always (среди других). Вы можете увидеть их все здесь

Итак, вам нужно передать функцию, которая в какой-то момент будет выполнена с переданными ей данными.

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

function foo(bla) {
  console.log(bla)
}

, поэтому большую часть времени (но не всегда) вы пройдете foo не foo()

. Надеюсь, это будет иметь смысл. Когда вы сталкиваетесь с такими вещами, которые кажутся запутанными, я настоятельно рекомендую полностью прочитать документацию, чтобы хотя бы понять ее. Это сделает вас намного лучшим разработчиком.

317
задан Jeroen 1 May 2014 в 14:15
поделиться

6 ответов

Вам нужно использовать текстовое поле для получения многострочной обработки.

<textarea name="Text1" cols="40" rows="5"></textarea>

540
ответ дан lambda 26 August 2018 в 17:15
поделиться

Вы не можете. Единственный элемент HTML-формы, который разработан как многострочный, - <textarea> .

41
ответ дан Álvaro González 26 August 2018 в 17:15
поделиться

Проверьте это:

Элемент TEXTAREA создает многострочный текстовый входной контроль

12
ответ дан Matías Fidemraizer 26 August 2018 в 17:15
поделиться

Вы должны использовать textarea для поддержки многострочных входов.

<textarea rows="4" cols="50">
Here you can write some text to display in the textarea as the default text
</textarea>
0
ответ дан Osanda Deshan 26 August 2018 в 17:15
поделиться

Можно сделать многострочную текстовую вводную строку, присвоив ей атрибут word-break: break-word;. (Проверено только в Chrome)

50
ответ дан Sté 26 August 2018 в 17:15
поделиться

Использование textarea

<textarea name="textarea" style="width:250px;height:150px;"></textarea>

не оставляет места между открывающими и закрывающими тегами Или Else Это оставит несколько пустых строк или пробелов.

35
ответ дан themightysapien 26 August 2018 в 17:15
поделиться