typescript - Promise 的自定义方法

typescript - custom method off Promise

我已经声明了一个 returns 承诺的方法:

confirm(title: string, message: string) {
    var promise = new Promise((resolve, reject) => {

        ....

        if (success) {
            resolve();
        } else {
            reject();
        }
    });
    return promise;
}

使用它的唯一方法似乎如下

confirm(...).then(() => { /*success code*/ }, () => { /*error code*/ });

为了简单起见,我想引入自定义回调,但不太确定如何去做。

这就是我的意思 - 将 .then 分成两种方法:

confirm(...)
  .done(() => { })
  .fail(() => { });

有人对如何实施有建议吗?或者至少我可以在哪里 google 解决方法?

据我所知,您提出的方法等同于 thencatchthen 也接受拒绝回调,但它不必接受):

confirm("", "")
    .then(()=> {})
    .catch(()=> {})

如果你真的想添加这样的别名,你可以添加到 prototype,但你必须声明它们以便 typescript 知道这一点:

declare global { // declare global { ... } needed if we are in a module, otherwise just the content of this block is needed
    interface Promise<T> {
        done(done : () => void): Promise<void>//overly simplistic, should be oveloded if we want this to be general propose
        fail(done : () => void): Promise<void>//overly simplistic, should be oveloded if we want this to be general propose
    }
}

Promise.prototype.done  =Promise.prototype.then;
Promise.prototype.fail  =Promise.prototype.catch;

confirm("", "")
    .done(()=> console.log("ok"))
    .fail(()=> console.log("fail"))

您也可以使用 async/await 来处理 promise,也许它更适合您的情况:

(async function () {
    try {
        await confirm('', '');
        console.log('ok')
    } catch (e) {
        console.log('fail')
    }
})()