我在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})
中进行测试:如果您在控制台中看到一个结果,则表明该结果是同步的(请注意,我对下划线不熟悉,因此不确定我的测试示例)