Преобразовать обратный вызов в async / await для nexmo.message.sendSms? - PullRequest
0 голосов
/ 24 апреля 2019

Мое приложение nodejs вызывает nexmo API для отправки SMS-сообщения.Вот API:

nexmo.message.sendSms(sender, recipient, message, options, callback);

В приложении это

const nexmo = new Nexmo({
                apiKey: "nexmoApiKey",
                apiSecret: "nexmoSecret"
            }, { debug: true });        

nexmo.message.sendSms(nexmo_sender_number, cell_country + to, message, {type: 'unicode'}, async (err, result) => {....});

Есть ли способ преобразовать его в асинхронную / ожидающую структуру, как показано ниже:

const {err, result} = nexmo.message.sendSms(nexmo_sender_number, cell_country + to, vcode, {type: 'unicode'});
if (err) {.....};
//then process result...

Я хотел бы вернуть message родительской функции после того, как сообщение было успешно отправлено.

1 Ответ

1 голос
/ 24 апреля 2019

Библиотека nexmo-node пока поддерживает только обратные вызовы. Вам нужно будет использовать что-то вроде promisify или bluebird, чтобы преобразовать функцию sendSms в обещания, и использовать async / await с ней. Вот пример использования Promisify Node

const util = require('util');
const Nexmo = require('nexmo');

const nexmo = new Nexmo({
                apiKey: "nexmoApiKey",
                apiSecret: "nexmoSecret"
            }, { debug: true });        


const sendSms = util.promisify(nexmo.message.sendSms);

async function sendingSms() {
  const {err, result} = await sendSms(nexmo_sender_number, cell_country + to, message, {type: 'unicode'});
  if (err) {...} else { 
    // do something with result 
  }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...