Вам необходимо вернуть обещание в функции showConfirmationDialog
. У вас есть 2 варианта:
- Реализация Promise внутри функции для разрешения или отклонения в зависимости от успеха или неудачи
- Преобразование функции в обещание с функцией
promisify()
.
Второй вариант возможен только в том случае, если ваша функция использует «Ошибка первого обратного вызова». Как и callback(error, obj)
, затем promisify преобразует его в реализацию Promise.
Вот код для непосредственной реализации Promise, просто измените обратный вызов на обещание:
const showConfirmationDialog = () => {
const dialog = new MDCDialog(document.querySelector('.mdc-dialog'));
return new Promise((resolve, reject) => {
dialog.open();
dialog.listen('MDCDialog:closed', e => {
if (e.detail.action === 'confirm') {
resolve();
} else {
reject();
}
});
});
};
--- - РЕДАКТИРОВАТЬ ----
В вашем случае обещание шаблона обратного вызова с ошибкой может выглядеть следующим образом:
const showConfirmationDialog = callbackFunc => {
const dialog = new MDCDialog(document.querySelector('.mdc-dialog'));
dialog.open();
dialog.listen('MDCDialog:closed', e => {
if (e.detail.action === 'confirm') callbackFunc();
else callbackFunc();
});
};
const showConfirmationDialogPromise = Promise.promisify(showConfirmationDialog);
showConfirmationDialogPromise()
.then(() => console.log('promise work'));