2016-02-01 15 views
6

के साथ ब्लूबर्ड का उपयोग करके मैं bluebird लाइब्रेरी memcached पर उपयोग कर रहा हूं।अपरिभाषित सफलता कॉलबैक फ़ंक्शन

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

इस समारोह दूसरा पैरामीटर में सफलता कॉलबैक इसलिए की तरह तो फिर (रेस) समारोह कहा जाता है नहीं हो रही है लगता है फोन नहीं करता है।

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

क्या मेरे लिए अनिश्चित सफलता कार्यक्रम को संभालने का कोई तरीका है?

+0

'setAsync' क्या है? – raina77ow

+0

@ raina77ow यह "Promise.promisifyAll (memcached) के बाद उत्पन्न हो रहा है;" मैंने अपनी पोस्ट संपादित की। –

+0

सिडेनोटे, ऐसा लगता है कि आप अपने तर्क को 'नए वादे' कन्स्ट्रक्टर में अनावश्यक रूप से लपेट सकते हैं। – Retsam

उत्तर

4

प्राथमिक मुद्दा यह है कि आप memcached.setAsync पर टाइमआउट तर्क प्रदान नहीं कर रहे हैं, लेकिन यह memcached.set के लिए एक अनिवार्य तर्क है। इन दो पंक्तियों को बराबर हैं:

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

समय समाप्त तर्क जोड़ें और अपने कोड अपेक्षित ढंग से काम करना चाहिए।

+0

यह अब काम कर रहा है, बढ़िया। –

संबंधित मुद्दे