dropcore.js函数,如_.findWhere(),是否同步返回结果?

dra*_*ake 4 javascript underscore.js

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

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

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

我找到一个答案,说_.each()是同步的,但我不知道如何确定,我也不是知道这个问题的答案申请_.findWhere()或其他underscore.js功能.

flo*_*bon 7

我相信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
});
Run Code Online (Sandbox Code Playgroud)

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