Есть ли способ отменить обещание? - PullRequest
0 голосов
/ 29 мая 2020

Этот код работает хорошо.

У меня есть список доступных кампаний и еще один список активных пользователей. Для каждого пользователя мне нужно проверить, какие кампании были показаны ранее. Я хотел бы знать, можно ли обойтись без моего обещания написать 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);    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...