我有一组章节,我需要获取与每个部分有关的记录。 所有记录都存储在Redis中的Hash中。
但是当执行下面的代码时,它已经调用了Callback。
function GetData_Redis(sectionsList)
{
var async = require('async');
var sectionResults = [];
var regex = new RegExp(' ', 'g');
var redisMultiClient = require("redis").createClient(6379, 'XXXX', { auth_pass: 'XXXX' }).multi();
async.forEach(sectionsList, function taskIterator(sectionItem, callback)
{
var sectionName = sectionItem.name.replace(regex, "");
sectionName = sectionName.toLowerCase() + ":";
for (var i = 0; i < 20; i++)
{
redisMultiClient.hgetall(sectionName + i);
}
redisMultiClient.exec(function (error, replies)
{
if (error)
{
callback(err);
}
else
{
if (replies.length > 0)
sectionResults.push({ section_id : sectionItem.section_id, name : sectionItem.name, articles : replies });
callback(null);
}
});
},
function ()
{
redisMultiClient.quit();
console.log("came here");
});
}
但是当我在forEach中使用下面的代码并在执行后退出它时它可以工作,但是不能保持顺序。
var redisMultiClient = require("redis").createClient(6379, 'XXXX', { auth_pass: 'XXXX' }).multi();
所以我该如何解决呢。