2016-08-02 4 views
-1

Ich habe bestimmte Servicefunktionen im Formatfehler und Reaktion auf Rückruf, so dass es erfolgreich promisified werden kann.Drossel promisifyAll statt einzelnen promisifying Funktionen

Beispiel: service.js

functionA(callback) { 
... 
callback(error, response); 
} 
functionB(callback) { 
... 
callback(error, response); 
} 
module.exports.functionA = functionA; 
module.exports.functionB = functionB; 

Von einem Controller, I erfolgreich promisified

const functionA = Promise.promisify(service.functionA); 
const functionB = Promise.promisify(service.functionB); 

verwenden, aber den Code zu optimieren, habe ich:

const {functionA, functionB} = Promise.promisifyAll(service); 

das ist funktioniert nicht ... mit Fehler "Callback ist keine Funktion". Ist es nicht möglich, Bluebird promisifyAll so zu verwenden?

+0

'promisifyAll' erstellt neue Methoden mit einem nachgestellten Methodennamen. Ihre Destrukturierung erhält die ursprünglichen Methoden. – Bergi

+0

Sorry @Bergi, ich bekomme dich. Ist es nicht möglich, diese Funktionen so abzubilden wie ich? – Nisha

+0

Nein, es ist nicht möglich. Sie müssten 'const {functionAAsync, functionBAsync} = ...', und selbst das funktioniert nicht, da sie ihren Kontext verloren haben. – Bergi

Antwort

2

Wie pro Bluebird doc, verwendet, um das Suffix in Aufruf:

const {functionAAsync, functionBAsync} = Promise.promisifyAll(service); 

Arbeiten in Ordnung.

Verwandte Themen