没有回调的nodejs mysql

Kan*_*rat 5 mysql synchronous node.js

有什么方法可以同步执行mysql查询吗?就像是

getUser:function(user_id){
  return mysql_connection.query("select ... ");
},
Run Code Online (Sandbox Code Playgroud)

像这样使用它

var user = getUser(id);
Run Code Online (Sandbox Code Playgroud)

msc*_*dex 4

一般来说,答案是否定的,除非您使用与 libmysqlclient (或类似的)的绑定来公开此类同步接口。

您希望避免此类同步接口,因为它们本质上会阻止您在执行同步函数时执行任何其他操作。例如,如果您有一台服务器正在运行,则意味着您无法为其他客户端提供服务。它们都至少必须等待您的同步函数完成。

不过,处理异步任务的方法有很多,包括“手动”回调(显然)、基于回调的帮助程序库,如asyncPromises、生成器、async/await 等。其中一些甚至会产生同步 API 的错觉,而无需实际上是同步的。