是否可以制作伪全局承诺拒绝处理程序?

时间:2017-05-31 15:53:39

标签: reactjs react-native es6-promise fetch-api

fetch()相对于经典XMLhttpRequest()是一个很大的改进但是我想知道我是否window.addEventListener('unhandledrejection', event => ···);添加index.android.js index.ios.js我理论上可以删除所有.catch()我的承诺链中的{{1}}和伪全局承诺拒绝处理程序?我正在构建一个反应原生应用程序,该应用程序严重依赖于api调用,其中许多都是使用用户令牌进行身份验证的。当用户登录令牌存储在异步存储中时,每个令牌将在一定时间后过期。如果用户打开应用程序并无意中尝试拨打需要使用过期令牌进行身份验证的呼叫,我希望将用户路由到登录页面,无论呼叫是做什么,还是呼叫所在的组件。我目前有每个单独的承诺链自己处理未经认证的电话。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

您可以在@NamedQueries({ @NamedQuery(name = "TimeSlot.findByStartDateEndDate", query = "select t from TimeSlot t" + // fails because a timestamp is not a date " where t.startDateTime between :startDate and :endDate"), }) 之上进行自定义抽象,这将提供与API通信的方式,并且还具有一些业务逻辑,对于您来说,这是请求身份验证令牌或进行重定向。然后在其余代码中使用此抽象来进行API调用。这是一个展示这个想法的小例子:

fetch

然后您在代码export default function request(url, options = {}) { const req = fetch(url) .then((response) => { // Global response handler // ... // Hand response down the promise chain return response; }) .catch((err) => { // Global error handler // Check error status and (make redirect/request auth token) // Throw error down the promise chain if needed throw err; }); // Returns a promise return req; } 中使用它,但您可以随时修改和扩展它。

fetch()