Является ли замыкание функции Array.every асинхронным или синхронным - PullRequest
0 голосов
/ 22 февраля 2019

Со ссылкой на пример, приведенный в функции Array.Every.Является ли обратный вызов асинхронным или синхронным.Пример:

function isBelowThreshold(currentValue) {
  return currentValue < 40;
}

var array1 = [1, 30, 39, 29, 10, 13];

console.log(array1.every(isBelowThreshold));

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

Всегда ли обратный вызовфункциональное синхронное закрытие или асинхронный обратный вызов?Со ссылкой на пример выше.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Спасибо CodeMonkey за ваше предложение.Я создал тестовый файл следующим образом:

console.log('s1');

function isBelowThreshold(currentValue) {
    console.log('s4');
  return currentValue < 40;
}

console.log('s2');
var array1 = [1, 30, 39, 29, 10, 13];

console.log('s3');
console.log(array1.every(isBelowThreshold));
console.log('s5');

Используя Node, я протестировал скрипт следующим образом:

enter image description here

Наблюдаемое поведение массива Каждая функция состоит в том, что она является синхронной.Функция Array.Prototype.Every дает хорошее описание «обратного вызова».

Что тогда означает термин «обратный вызов»?Это простое функциональное замыкание или это больше, чем в контексте Jscript?

0 голосов
/ 22 февраля 2019

Я почти уверен, что это синхронно.В сигнатуре для .every () нет обратного вызова, который обычно является вашим первым признаком того, что он асинхронный.Но есть простой способ проверить это.Поместите оператор console.log («inside») внутри функции «isBelowThreshold», а console.log («outside») сразу после array1.every (...).Если он асинхронный, вы увидите, что «снаружи» появляется либо раньше, либо между ними «внутри».Если это синхронно, «снаружи» появится после всего остального.

...