nodejs怎么接合async写出连接池(获取-操作-回收)的操作?
接触nodejs没多久,见笑。
需要一个类似java中AOP的写法,比如现在有一个Redis连接池,获取-操作-回收的写法是这样的:
java
public class JedisInterceptor implements MethodInterceptor{ @Inject private Session<Jedis> session; @Override public Object invoke(MethodInvocation invocation) throws Throwable { if(!session.isClosed()) return invocation.proceed(); try { //获取连接 session.start(); return invocation.proceed(); } catch (Throwable e) { throw e; } finally { if(!session.isClosed()) { //不管是否出错,始终回收连接 session.close(); } } } } }
现在需要同样的nodejs写法,看了看async,似乎可以写出来,但真心不知道怎么写。。。求高手指点,目前nodejs代码已经是这个样子:
javascript
var pool = require('generic-pool'); var redis = require("redis"); //async包 var async = require('async'); //Redis连接池 var redisPool = pool.Pool({ name: 'redis', create: function(callback) { var connection = redis.createClient(6379, '127.0.0.1', {}); callback(null, connection); }, destroy: function(connection) { connection.quit(); }, max: 5, min: 2, idleTimeoutMillis: 30000, log: false }); module.exports = { redis: function(fn) { //这里怎么通过async实现上面java的罗辑? } }
我上面的是基佬
9 years, 8 months ago