javascript - BreezeJS 中央错误处理程序和自动重试

标签 javascript breeze

有没有办法让 Breeze JS 在通信失败的情况下自动重试?理想情况下,我想添加一个基于响应的中央事件处理程序,例如 401 我可以提示用户重新登录,然后重试请求,或者如果其一般连接问题为用户提供重试或取消的选项?

我可以在每个请求位置添加代码来处理这个问题,但这将是大量工作,理想情况下这需要位于一个中心位置。

最佳答案

您可以将重试逻辑放在 request interceptor

来自 Breeze 文档:

Stock Breeze AJAX adapters offer an extension point, the requestInterceptor. This interceptor gives the developer one last look at each request before the adapter calls the actual AJAX component.
The interceptor takes a single parameter, the requestInfo, and returns nothing.

var requestInfo = {
        adapter: this,      // this AJAX adapter
        config: ...,        // the configuration object passed to the wrapped AJAX component
        dsaConfig: config,  // the config arg from the calling Breeze DataServiceAdapter
        success: successFn, // adapter's success callback
        error: errorFn      // adapter's error callback
}

您的请求拦截器可以包装 error 回调并添加重试逻辑和 401 处理。

如果您将 Breeze 与 jQuery 结合使用,您可以使用 jQuery 的 ajax prefilter 在较低级别执行此操作。 .

关于javascript - BreezeJS 中央错误处理程序和自动重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28920506/

相关文章:

javascript - JQDateRangeSlider更改开始/结束值

Javascript - .split 与正则表达式返回所有匹配项(如果下一个字符不是)

model-view-controller - 如何计算带有 Breeze .js 扩展实体的网格中的总数?

javascript - Breeze 错误 : Illegal construction - use 'or' to combine checks

exception - 查询确实返回数据时出现奇怪的 Breeze 错误(更新 : Metadata not loading correctly)

javascript - Breeze - 克隆元素

javascript - 如何让 eval 在 IE 中正常运行?

javascript - 带有 Javascript 和 CSS 的 DHTML 不工作

javascript - 一页导航挡住了我的内容