我正在考虑使用 ES5 的新Array.forEach()。我相信每个项目的回调应该并行执行。我想要一个函数在处理完所有值后返回。
// I'd like to make parent_function return a new array with the changed items.
function parent_function(array_of_things) {
new_array = []
array_of_things.forEach( function(thing) {
new_array.push('New '+thing)
if ( new_array.length === array_of_things.length ) {
// OK we've processed all the items. How do I make parent_function return the completed new_array?
return new_array
}
})
}
我怀疑这可能是错误的方法:因为 parent_function 可能在每个回调被触发之前完成。在这种情况下,触发自定义事件(由我们处理完所有项目后生成的任何需要的数据来处理)可能是最好的方法。但是我在 MDC 文档中没有找到任何提及。
但我对 JS 还很陌生,希望得到一些同行评审来确认!
编辑:看起来 forEach() 毕竟是同步的。之后我记录了结果数组并看到不一致的结果——有时是两个项目,有时是四个项目,等等,这让我觉得它是异步的。如果你正在阅读这篇文章并有类似的行为,我建议你阅读这篇关于 Chrome 数组日志记录中的问题的文章。