我有以下代码
var arr1 =['1','2','3'];
client.sadd("arr1",arr1);
var arr2=['2','4','6'];
var arr3 =['3','6','9'];
client.sadd("arr2",arr2);
client.sadd("arr3",arr3);
client.sadd("arraylist",'arr1','arr2','arr3');
function getValue(value){
client.smembers("arraylist",function(err,data){
if(err) console.log(err);
else {
console.log(data);
data.forEach(function(res){
console.log(res);
client.smembers(res,function(err,data){
if(err) console.log(err);
else data.forEach(function(val){
if(val==value){
client.sadd("validarr",res);
console.log("stored!")
}
})
})
})
}
})
}
function randarr(){
client.srandmember("validarr",function(err,response){
if(err) console.log(err);
else console.log(response);
})
};
promise.resolve(getValue(2)).then(function()
{
console.log("hey");
promise.resolve(randarr()).then(function(){
console.log("done")
},function(err){console.log("error")})
})
我想在完成函数getValue的执行后执行函数randarr(),因为我想在下一个函数randarr()中使用保存的set validarr。
我尝试使用async.series。事实证明,这两个函数同时运行并按顺序打印输出。
所以通过使用promise.then我面临同样的错误 使用promises的代码输出:
hey
done
connected
[ 'arr2','arr3',arr1']
arr2
arr3
arr1
null
stored!
stored!
函数没有按顺序执行。我应该使用什么来依次运行函数。
有人可以帮我解决这个问题吗?