underscore.js 函数,例如 _.findWhere(),return 的结果是同步的吗?

Do underscore.js functions, such as _.findWhere(), return results synchronously?

我在 underscore.js 中使用 _.findWhere() 从此类对象的集合中查找包含特定 属性 的对象。例如:

var rules = _.findWhere(rules, {id: ruleId});
if (!rules) {
    // do something 
}
else {
    // do something else
}

然后我开始担心JavaScript是异步的。我知道 _.findWhere() 会在第二行执行时完成填充 rules 对象吗?这是我需要为 underscore.js 中的每个方法考虑的事情吗?

我发现 an answer_.each() 是同步的,但我不确定这是如何确定的,我也不确定该答案是否适用于 _.findWhere() 或其他 underscore.js函数。

我相信underscore.js的每一个函数都是同步的,所以你不用担心:写在它后面的每一行都会在它之后执行。

反正如果不是同步的(即异步的)就需要回调,比如

// DISCLAIMER: this is a fictionnal code, it is in fact synchronous
_.findWhere(rules, {id: ruleId}, function done() {
    // code to be executed once finished
});

如果您仍然有疑问,可以在浏览器的控制台中进行测试_.findWhere([{a:true},{a:false}], {a:true}):如果您在控制台中看到一个结果,那么它是同步的(请注意,我不熟悉下划线,所以不确定我的测试示例)

绝大多数 JavaScript 是同步的,除非另有说明。

异步函数将具有回调或 return 承诺。但是同样,各种库中具有回调的大多数函数/方法都不是异步的。

它们是同步的。

自己看看:_.findWhere, _.matches, _.find, _.findIndex, createIndexFinder。这些函数中没有 setTimeout 的实例。