2016-08-02 3 views
-1

У меня есть определенные служебные функции в формате для обратного вызова и ответа, чтобы он мог быть успешно пролонгирован.Bluebird promisifyAll вместо отдельных обещающих функций

Пример: service.js

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

От контроллера, я успешно promisified использованием

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

Но чтобы оптимизировать код, я использовал:

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

который не работает ... с ошибкой "обратный вызов не является функцией". Невозможно ли использовать Bluebird promisifyВсе подобное?

+0

'promisifyAll' создает новые методы с именем суффикса метода. Ваши деструкции получают оригинальные методы. – Bergi

+0

Извините @ Bergi, я хочу тебя. Невозможно ли отобразить эти функции так, как я сделал? – Nisha

+0

Нет, это не возможно. Вам нужно будет выполнять 'const {functionAAsync, functionBAsync} = ...', и даже это не работает, поскольку они потеряли свой контекст. – Bergi

ответ

2

Согласно Bluebird doc, используется суффикс вызова:

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

работает отлично.