无回调的nodejs-mysql
是否有任何方法可以执行mysql查询同步? 差不多无回调的nodejs-mysql,mysql,node.js,synchronous,Mysql,Node.js,Synchronous,是否有任何方法可以执行mysql查询同步? 差不多 getUser:function(user_id){ return mysql_connection.query("select ... "); }, 像这样使用它 var user = getUser(id); 通常,答案是否定的,除非您使用libmysqlclient(或类似)的绑定来公开此类同步接口 您希望避免使用这种同步接口,因为在执行同步函数时,它们基本上会阻止您执行任何其他操作。例如,如果您有一台正在运行的服务器,这意味着您
getUser:function(user_id){
return mysql_connection.query("select ... ");
},
像这样使用它
var user = getUser(id);
通常,答案是否定的,除非您使用libmysqlclient(或类似)的绑定来公开此类同步接口 您希望避免使用这种同步接口,因为在执行同步函数时,它们基本上会阻止您执行任何其他操作。例如,如果您有一台正在运行的服务器,这意味着您无法为其他客户端提供服务。它们都必须至少等待同步功能完成
处理异步任务的方法有很多,包括“手动”回调(显然)、基于回调的帮助程序库,如
async
、承诺、生成器、async/await、,等等。其中一些甚至产生了一种同步API的假象,但实际上并不同步。如果对整个请求使用worker,它不会停止执行,只有在mysql返回值之前才会停止执行。这很可能是所有用其他语言开发的webservices应用程序所做的(但使用线程)。我认为他和我遇到的问题是,所有函数和方法都需要异步并等待,正因为如此。@Orlandolete所有JavaScript都从同一个主线程运行。当您从JavaScript执行同步操作时,在此期间不能运行其他JavaScript代码。因此,如果您有一个http服务器,这意味着在同步操作完成之前,您无法为其他http请求提供服务。