我有两个关于相同主题依赖视角的问题。关于同步性/异步性假设的最佳实践
让我们假设有一个接受接收执行函数的返回值的回调函数:
function myFunction(callback) {
//do something
callback(something);
}
现在有人调用这个函数:
myFunction(function(something) {
console.log('a');
});
console.log('b');
我的观点是: 是它总是为用户(调用函数的用户)保存以便对事件'a'和'b'的顺序进行假设?结果:依赖于确切的行为被认为是糟糕的编码风格吗? (不是谈论runnig时间,而是关于同步性或异步性!)有人可能会认为myFunction
是异步的,因此'b'在'a'之前必须发生总是。
相反: 作为设计某个功能的人,是否认为编码风格不好,没有可预测的顺序?也许有必要等待某个事件的发生,导致异步的回答,或者这种确切的行为不需要等待,因此不需要异步性。 在这种情况下,添加一个process.nextTick(...)以始终具有相同的行为是否最好?
在此先感谢!
如果开发者想要安全,他们应该在使用之前了解'myFunction'的行为方式。 – 2012-02-14 18:58:17
这是一个非常外交的回答:)在那个函数的设计者的情况下是什么? – zaphod1984 2012-02-14 19:24:01
...对下面的评论作出回应,在用户无法预测其行为的情况下创建一个函数并不明智。如果您可以通过使其同步行为来优化某个特定情况,那么您应该将其记录为需要回调的异步函数。当它结束同步时,您仍然可以在准备就绪时触发回调。 – 2012-02-14 19:37:41