NodeJS和synchrone调用mysql

时间:2014-08-06 07:01:19

标签: javascript mysql node.js

我实际上正在开发一个小应用程序,我在其中使用服务来访问MYSQL中的数据。

实际上,它使用回调函数很有效:

service.request('SELECT * FROM table', function(data){
    mydata = data
})

我需要在没有回调的情况下使用它,而不会像这样阻塞节点事件循环:

mydata = service.request('SELECT * FROM table')

有可能这样做吗? 我该怎么办?

编辑:如何使用光纤和未来库实现这一目标? :d

感谢您提前

2 个答案:

答案 0 :(得分:1)

你可以使用wait.for,一个光纤包装器:

https://github.com/luciotato/waitfor

var wait=require('wait.for');

function process(){
   var data = wait.forMethod(service,"request",'SELECT * FROM table');
   console.log(data);
}

wait.launchFiber(process);

答案 1 :(得分:0)

如果在继续执行代码之前需要来自服务器的响应,那么除了等待它返回之外,您无能为力。这段代码应该写在回调中。

如果您想从服务器获得响应,但不一定需要响应来继续执行代码,那么您应该在拨打电话后但在回调之外编写此代码。

service.request('SELECT * FROM table', function(data) {
    var mydata = data;

    //do the stuff that requires mydata
});

//keep doing stuff that does not require mydata.

问题是,您无法从数据库中获取数据而不是等待它返回!没有多少技术可以解决这个问题:)