如何等待 数据库取值完成后 执行下一步
第一天学 nodejs,以前一直用py。 麻烦问问大家,如果等数据库的x值取出,再执行下一步? 谢谢!
if (requestDetail.url.indexOf('h') === 0) {
var ssdb = require('ssdb');
var pool = ssdb.createPool({host: '10.1.2.5', port: '8888', size: 15});
var conn = pool.acquire();
var x = conn.qpop('co', function (err, data) {
if (err) {
console.log(err);
}
console.log('Q push co: ' + data);
return data;
});
//取数据库的值,是异步的,所以返回的x是空的。如果在这里等待数据库取值完成呢?
return {
requestData: 'i-am-anyproxy-modified-post-data' + x
};
}
2 回复
在node里面,你需要在回调函数里面取值然后继续业务逻辑。也可借助thunk promise async 等来简化代码。
如果你想像 python 一样,直接拿到return 返回值,你应该需要协程类解决方案,如 https://github.com/fibjs/fibjs
@ngot 我是为了写 anyproxy的代理规则才来接触 nodejs的。
这个return必要在这个位置,不能放进另一层里面。
我今天在看一下 async
return {
requestData: 'i-am-anyproxy-modified-post-data' + x
};