【发布时间】:2016-05-13 08:28:03
【问题描述】:
这是我的代码
var x = 0
data.results[0].taxonomies.some(function(e){
if(taxo.indexOf(e.code)!=-1){ //if at least one code from the data base is in my list of codes
callback(validLic(data.results[0].taxonomies)) //return true after some other validations
return true
}else{
x++
return false
}
})
if(x==data.results[0].taxonomies.length){callback(false)}//if the entire array was processed, and I didn't find anything I was looking for, return false
我希望有人确认,由于节点的异步特性,最后一个 if 语句在某个时间点,在我处理完数组之前一定会触发。
如果没有一些同步或并行库的帮助,我如何才能更好地管理这种情况?
我这样问的原因是因为我的印象是,如果我不能写出完全异步的东西,那么我就没有效率地写它,对吧?
编辑:
根据 Luc Hendirks 的逻辑,我已将代码更改为:
var flag = data.results[0].taxonomies.some(function(e){
if(taxo.indexOf(e.code)!=-1){ //if at least one code from the data base is in my list of codes
return true
}else{
return false
}
})
if(flag==true){
callback(validLic(data.results[0].taxonomies))
}else{
callback(false)
}
因为这遵循下面概述的同步特征,所以在现在调用回调之前我不应该遇到未定义标志的问题,对吧?
【问题讨论】:
-
你的印象是从哪里来的?
-
我把整个游戏写成异步的,太棒了。
-
我已经看到了数百个 Hello World 的高效“同步”实现。这是一个:
echo "Hello world"。这是一个“异步”版本:echo "Hello World" &哪个更错误? -
为什么不想使用并行库?
parallel是一个很棒的并行库,async非常适合异步代码(但不是真正的并行)。async为您的案例提供了许多非常有用的方法。 -
回答你的问题,如果
callback有一些异步方法,那么是的,代码是错误的。如果只是同步方法(返回值),那就对了。
标签: javascript arrays node.js performance asynchronous