Array.every函数的关闭是异步还是同步

时间:2019-02-22 18:39:07

标签: node.js jscript

参考Array.Every函数中给出的示例。回调是异步的还是同步的。示例是:

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

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

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

一个真实的例子是使用Every函数检查Yup中使用的测试函数中所有字符是否都是数字。

回调函数始终是功能性的同步闭包还是异步回调?参考上面的示例。

2 个答案:

答案 0 :(得分:1)

我很确定它是同步的。 .every()的签名中没有回调,通常这是您异步的第一个迹象。但是有一种简单的方法可以对其进行测试。将console.log(“ inside”)语句放入“ isBelowThreshold”函数中,然后将console.log(“ outside”)放在array1.every(...)之后。如果是异步的,您会看到“外部”出现在“内部”行之前或之间。如果是同步的,则“ outside”将出现在所有其他内容之后。

答案 1 :(得分:-1)

谢谢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上下文中的闭包还要多?