gpt4 book ai didi

node.js - 当异步回调存在时,redis hash 命令挂起 Node.js

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:35 24 4
gpt4 key购买 nike

我的目标是进行集成测试,测试在 redis 中保存值的 Node 模块。这是测试:

require('coffee-script');
var should = require('should')
, redis = require('redis')
, async = require('async')
, Domain = require('../index');

async.series([
function(callback){
db = redis.createClient();
callback(null,'zero');
},
function(callback){
db.flushdb( function (err, didSucceed) {
if(err){
console.log('error: ' + err.message);
callback(err, 'one');
}
});
callback(null, 'one');
},
function(callback){
should.exist(Domain);

domain = new Domain({'attOne':1, 'attTwo':2, 'id':1});

domain.should.have.property('save');
domain.should.have.property('attOne');
domain.should.have.property('attTwo');

domain.save.should.be.an.instanceof(Function);
callback(null, 'two');
},
function(){
db.end();
}
],
function(err, results){
if(err){
console.log('error encountered: ' + err.message);
db.end();
}
console.log('All tests passed');
}
);

通过此测试,问题在于 Redis 连接在 Redis 刷新数据库之前关闭(如果我完全删除 db.end(),测试会挂起,但 Redis 数据库会被刷新)。显然, async.series 没有按照我的预期工作,每个函数都按顺序在下一个函数之前运行,或者我误解了?如何确保此测试以串行流执行,以便 Redis 连接在刷新之前不会关闭? ...任何库/框架的任何建议可以帮助我完成我在这里想要完成的任务?谢谢您

最佳答案

要结束连接并停止挂起,请在适当的位置使用 client.quit()client.end()

例如,将其放在代码末尾:

//...
setTimeout(function(){ client.quit(); }, 3000);
// 3000 means wait 3 seconds and quit the redis connection

client.unref() 是另一个可以完成这项工作的实验函数。

引用:doc

关于node.js - 当异步回调存在时,redis hash 命令挂起 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com