参考Array.Every函数中给出的示例。回调是异步的还是同步的。示例是:
function isBelowThreshold(currentValue) {
return currentValue < 40;
}
var array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
一个真实的例子是使用Every函数检查Yup中使用的测试函数中所有字符是否都是数字。
回调函数始终是功能性的同步闭包还是异步回调?参考上面的示例。
答案 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,我对该脚本进行了如下测试:
数组每个函数的可观察行为是同步的。 Array.Prototype.Every函数对“回调”给出了很好的描述。
“回调”一词意味着什么?是简单的函数闭包,还是比Jscript上下文中的闭包还要多?