您是否考虑过使用不同的命名符号将同步代码与代码中的异步代码分开?喜欢
function i_am_synchronous()
{
return 1;
}
function iAmAsynchronous(callback)
{
db.query("SELECT * FROM 'table",callback)
}
这是一个好主意还是坏主意?你觉得怎么样?
答案 0 :(得分:1)
我认为在javascript中使用同步调用是个坏主意,避免这种情况。为了获得类似同步调用的模拟,我建议使用Deferred对象(例如http://api.jquery.com/category/deferred-object/)。此外,我建议你需要一些I / O或远程服务器调用的地方,以便可以使用回调和延迟对象,就像在jQuery.ajax函数http://api.jquery.com/jQuery.ajax/中完成的那样。在这里,您可以采用回调方式或延迟方式进行操作,对于使用此ajax调用的客户端来说,它绝对是纯粹的
答案 1 :(得分:1)
从功能签名和/或其描述中可以明显看出它是如何运作的。如果你将回调函数传递给在函数执行之后执行的函数,那么这几乎意味着它是异步的。使用具有同步函数的回调没有多大意义。例外情况类似于.sort()
,但其目的和操作方式非常不同,其回调的目的也不同。
简而言之:你(希望)不会在不知道它们做什么以及它们的参数和返回值代表什么的情况下调用函数。由此您已经知道函数是同步还是异步操作,您不需要其他语法来发出信号。