bon*_*hef 24 javascript mapping asynchronous callback node.js
每次调用doSomething()时,我可以依靠nodeIDs映射完成吗?
nodeIDs = $.map(nodeIDs, function(n){
return n.match(/\d+$/);
});
doSomething(nodeIDs);
Run Code Online (Sandbox Code Playgroud)
我以为node.js中的所有回调都是异步的?我读过一篇关于通用编程的文章,回调可能是同步的,但我不确定node.js?
nal*_*ply 45
JavaScript也是一种函数式编程语言.你在这里有一个«高阶函数»,一个函数作为参数.高阶函数是同步的(但请参见下面的注释).
资料来源:
map()是高阶函数的典型例子.它需要一个函数并将其应用于数组的所有元素.这个定义听起来非常"功能性".Node也不提供此功能.它由MDN Array.prototype.map()记录并由ECMAScript 5.1指定.
回答你的问题:是的,在应用了所有元素后doSomething(nodeIDs)调用.
setTimeout()即使它将一个函数作为参数,setTimeout()也不是一个更高阶函数,因为它不是真正的功能,因为它使用时间.纯粹的功能是永恒的.例如,结果map()不依赖于时间.这就是这个问题的真正含义.如果某些东西不依赖于时间,则可以同步执行.问题解决了.
感谢Simon对JavaScript中高阶函数的定义提出质疑.
| 归档时间: |
|
| 查看次数: |
27979 次 |
| 最近记录: |