Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无回调的nodejs-mysql_Mysql_Node.js_Synchronous - Fatal编程技术网

无回调的nodejs-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(或类似)的绑定来公开此类同步接口 您希望避免使用这种同步接口,因为在执行同步函数时,它们基本上会阻止您执行任何其他操作。例如,如果您有一台正在运行的服务器,这意味着您

是否有任何方法可以执行mysql查询同步? 差不多

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请求提供服务。