做下划线.js函数,如_.findWhere(),同步返回结果

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

本文关键字:同步 结果 返回 findWhere 下划线 js 函数      更新时间:2023-09-26

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

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

然后我开始担心JavaScript是异步的。我是否知道_.findWhere()将在执行第二行时完成填充rules对象?对于下划线.js中的每种方法,我需要考虑这一点吗?

我找到了一个答案,说_.each()是同步的,但我不确定它是如何确定的,也不确定这个答案是否适用于_.findWhere()或其他下划线.js函数。

我相信

下划线的每个函数.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})中进行测试:如果您在控制台中看到结果,那么它是同步的(请注意,我不熟悉下划线,所以不确定我的测试示例)

它们是同步的。

自己看看: _.findWhere, _.matches, _.find,

_.findIndex, createIndexFinder.这些函数中没有setTimeout实例。

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

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