做下划线.js函数,如_.findWhere(),同步返回结果
Do underscore.js functions, such as _.findWhere(), return results synchronously?
我在下划线中使用_.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 都是同步的。
异步函数将具有回调或返回承诺。但同样,各种库中具有回调的大多数函数/方法都不是异步的。
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- 在控制器和数据对象之间同步数据
- JSONP请求返回结果,但也触发error_callback
- 同步调用,直到用户通过angular验证为访问者
- javascript函数同步
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 将地理编码结果转换为php变量以发布到mysql数据库
- 如何从node.js中的HTTP请求中获得同步结果
- 如何在ReactJS中同时调用多个ajax(并同步获得结果)
- 做下划线.js函数,如_.findWhere(),同步返回结果
- 使AJAX“get”函数同步/如何获得结果
- 为什么同步使用承诺会返回异步结果
- 不能输入async(同步)函数的回调/空结果
- 角度地理编码结果不同步
- 如何调用angular's函数同步返回角度之外的函数结果
- 在点击时增加/减少增量计数器的同步结果