【发布时间】:2012-02-14 18:55:48
【问题描述】:
我有两个关于同一主题的问题取决于视角。
假设有一个函数接受一个回调,该回调接收执行函数的返回值:
function myFunction( callback ) {
//do something
callback( something );
}
现在有人调用了这个函数:
myFunction( function( something ) {
console.log( 'a' );
} );
console.log( 'b' );
我的观点是:
是否总是让用户(调用函数的用户)对事件“a”和“b”的顺序做出假设?结果:依赖确切的行为是否被认为是糟糕的编码风格? (不是在谈论运行时间,而是在谈论同步性或异步性!)有人可能认为myFunction 是异步的,因此“b”必须总是在“a”之前发生。
反过来: 作为设计某个功能的人,没有可预测的顺序是否被认为是不好的编码风格?也许有必要等待某个事件发生,从而导致异步应答,或者可能不需要等待这个确切的动作,因此不需要异步性。 在这种情况下,最好添加一个 process.nextTick(...) 以始终具有相同的行为吗?
提前致谢!
【问题讨论】:
-
如果开发者想要安全,他们应该在使用之前了解
myFunction的行为方式。 -
这是一个非常圆滑的答案 :) 该功能的设计者会怎样?
-
...回应您在下面的评论,创建一个用户无法预测其行为的函数是不明智的。如果您可以通过使其行为同步来优化特定情况,您可能仍应将其记录为需要回调的异步函数。当它最终同步时,您仍然可以在准备好时触发回调。
标签: javascript node.js