我实际上正在开发一个小应用程序,我在其中使用服务来访问MYSQL中的数据。
实际上,它使用回调函数很有效:
service.request('SELECT * FROM table', function(data){
mydata = data
})
我需要在没有回调的情况下使用它,而不会像这样阻塞节点事件循环:
mydata = service.request('SELECT * FROM table')
有可能这样做吗? 我该怎么办?
编辑:如何使用光纤和未来库实现这一目标? :d
感谢您提前
答案 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.
问题是,您无法从数据库中获取数据而不是等待它返回!没有多少技术可以解决这个问题:)