Цепочка к функции при инкапсуляции в ES6 - PullRequest
0 голосов
/ 21 марта 2020

Я новый студент ecmaScript6. Мне нужно соединиться с обещаниями «тогда» при инкапсуляции библиотечной функции.
Swal - это функция sweetAlert2, чтобы задавать вопросы и получать ответ от пользователя, да / нет.

Вот что Я пытаюсь сделать;

class MyLib {

    constructor() {
    }

    static askQuestion(title, message){
        Swal.fire({
            title: title,
            text: message,
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: 'Yes, delete it!'
        }).then((result) => {
            return result;
        })
    }
}

Затем вызвать эту функцию, как;

MyLib.askQuestion("Are you sure?", "Are you sure you want to delete this ?").then(alert(result));

Но конечно; на консоли во время выполнения выдает «.askQuestion (...) не определено» из-за предупреждения ( результат ).

Как мне соединить два, а затем функционировать в es6?

1 Ответ

1 голос
/ 21 марта 2020

Вам нужно вернуть ваше обещание:

class MyLib {

    constructor() {
    }

    static askQuestion(title, message){
        return Swal.fire({
            title: title,
            text: message,
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: 'Yes, delete it!'
        });
    }
}

И, как уже говорили другие, ваш .then(result => {return result;}) был бессмысленным, поэтому его можно удалить.

Затем, когда вы его используете Вы должны передать функцию ссылка на .then(), поэтому измените это:

MyLib.askQuestion("Are you sure?", "Are you sure ...").then(alert(result));

на это:

MyLib.askQuestion("Are you sure?", "Are you sure ...").then((result) => alert(result));

или это:

MyLib.askQuestion("Are you sure?", "Are you sure ...").then(alert);

И, если Swal.fire() сможет когда-нибудь отказаться от своего обещания, вам также понадобится .catch().

...