Этот код работает хорошо.
У меня есть список доступных кампаний и еще один список активных пользователей. Для каждого пользователя мне нужно проверить, какие кампании были показаны ранее. Я хотел бы знать, можно ли обойтись без моего обещания написать undefined в моей матрице возврата.
Есть ли способ отменить обещание?
В этом случае, если в узле redis уже есть запись, ответ будет равен единице, и я хотел бы отменить обещание, чтобы избежать undefined return .
Как это исправить?
VerificarCampanhaEnvio : async function(user,campanhas){
const CampanhaUsers = [];
let sismember = util.promisify(cliente_redis.sismember).bind(cliente_redis);
return Promise.all(campanhas.map(async(campanha) =>{
return sismember("subscription:"+user.id,campanha.id_campanha).then((response)=>{
console.log('response',user.id,response,campanha.id_campanha);
if(response != 1){
data = {};
data.user = user;
data.campanha = campanha;
return data;
}
});
})).then((response) => {
return response;
});
},
FireMessage : function(){
Sucesso = function(data,campanhas){
if(campanhas.length > 0){
self.GetInscritosAtivos(function(users){
if(users !== false){
var contador = 1;
users.map(async(user) =>{
var finalArray;
console.log('user.id',user.id);
finalArray = await self.VerificarCampanhaEnvio(user,campanhas);
var filtered = finalArray.filter(function(el){ return el != null; });
if(filtered.length > 0) self.EnviarMensagem(filtered[0]);
});
}else console.log('fnpush:FireMessage','Nao existe subscricoes ativas');
});
}else console.log('fnpush:FireMessage','Nao existem campanhas de push disponiveis no
sistema.');
}
data = {};
data.zona = {};
data.zona.tipo = 'push';
data.sucesso = Sucesso;
data.falha = fnCampanha.CampanhaInexistente;
fnCampanha.GetCampanhas(data);
}