2016-02-01 18 views
6

Sto utilizzando la libreria bluebird su memcached.utilizzando bluebird con funzione di callback non definita successo

memcached.set('foo', 'bar', 10, function (err) { /* stuff */ }); 

questa funzione non chiama il successo di richiamata nel secondo parametro così sembra funzione .then (res) non sempre chiamato.

Promise.promisifyAll(memcached); 
memcached.setAsync(hashedCacheKey, obj).then(function (res) { 
      resolve(res); 
     }).catch(function (err) { 
      reject(err, null); 
     }); 

esiste un modo per gestire l'evento di successo non raggiunto?

+0

Che cos'è 'setAsync'? – raina77ow

+0

@ raina77ow viene generato dopo "Promise.promisifyAll (memcached);" Ho modificato il mio post. –

+0

Sidenote, sembra che tu possa involontariamente accoppiare la tua logica in un costruttore 'new Promise'. – Retsam

risposta

4

Il problema principale qui è che non si fornisce un argomento di timeout a memcached.setAsync, ma è un argomento obbligatorio per memcached.set. Queste due righe sono equivalenti:

memcached.set("foo", "bar",() => { /* this is never called */ }); 
memcached.setAsync("foo", "bar").then(() => { /* this is never called, either */ }) 

Aggiungere un argomento di timeout e il codice dovrebbe funzionare come previsto.

+0

Ora funziona, ottimo. –

Problemi correlati