Chain To Then 功能,同时在 ES6 中封装一个

Chain To Then Function While Encapsulating One in ES6

我是 ecmaScript6 的新学员。 我需要在封装库函数时链接到 "then" promises。
Swal 是 sweetAlert2 函数,用于提出问题并获得用户的响应,yes/no。

这是我正在尝试做的事情;

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 中链接两个然后函数?

您需要return您的承诺:

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;}) 毫无意义,因此可以将其删除。

然后,当你使用它时,你必须传递一个函数 reference.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()