如何保证承诺不会拒绝的API用户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保证承诺不会拒绝的API用户相关的知识,希望对你有一定的参考价值。

我有一个promise返回函数,并且那个promise从不拒绝,我总是处理所有错误并仍然解析一个值。我想通知用户,他/他不必在承诺中附加catch功能。


const createItem = (name: string): Promise<boolean> => {
   return new Promise<boolean>(resolve => {
       someAjaxCall().then(response => {
           if (response.status >= 200 && response.status < 300) {
              resolve(true);
           } else {
              handleError();    // some logging to console
              resolve(false);
           }
       }).catch(error => {
           handleError();    // some logging to console
           resolve(false);
       });
   });
} 

实际上将返回类型更改为Promise<void>,并用resolve(true)替换resolve()零件,并用resolve(false)替换reject()零件解决了我的问题。

但是我想知道还有其他方法可以告诉API用户“您将不再需要追加catch,因此您必须在那时准确地处理这些值”。

答案

但是我想知道还有其他方法可以告诉API用户“您将不再需要追加catch,因此您必须在那时精确地处理这些值”。

没有类似于以下事实:类型系统中没有办法说函数永不抛出,而承诺永不拒绝也没有办法。

您唯一的选择是,为此添加文档,

以上是关于如何保证承诺不会拒绝的API用户的主要内容,如果未能解决你的问题,请参考以下文章

返回承诺的 Vuex 操作永远不会解析或拒绝

承诺要么永远不会被调用,要么被拒绝(Parse JS SDK)

当用户选择“不再询问”并禁用地理定位时,React native `Geolocation.getCurrentPosition` 承诺将永远不会被解决/拒绝

链式承诺不会在拒绝时传递

承诺按顺序运行嵌套承诺并在第一次拒绝时解决

处理多个承诺拒绝[重复]