使用socket.io v1.2.1(仅使用"轮询"传输),有时我的客户端会断开连接.
我有大约50%的时间使用ping timeout断开连接事件回调函数,这是合理的.
其他时候,我得到transport close,client namespace disconnect,transport error和forced close.我在文档中没有找到任何关于断开原因的参考,并且无法从代码中真正理解它们的含义.
我想确保我以最好的方式处理每个断开连接(并且可能阻止它们).
也许有人可以对这些原因有所了解.
我正在为我的系统编写一个API,它将XHR发送到服务器并返回一个应该由调用者处理的promise - 到目前为止一直很好.
对于每个API调用,我必须使用.then和.catch调用,但通常(如75%的时间).catch引用相同的功能,只使用打印console.error.
我的问题是 - 有没有办法为我创建的每个promise附加一个默认的catch语句?(让我们说打印到控制台),对于我希望进一步处理拒绝的每个承诺,我会添加另一个.catch调用(甚至覆盖它)?
每个调用都有自己的.catch的简化示例:http://jsbin.com/waqufapide/edit?js,console
试图实现所需行为的非工作版本:http://jsbin.com/nogidugiso/2/edit?js,console
在第二个示例中,deferred.promise我返回一个附加catch()处理程序的promise ,而不仅仅是返回:
return deferred.promise.catch(function (error) {
console.error(error);
});
Run Code Online (Sandbox Code Playgroud)
这两个then渔获物和then函数调用在这种情况下.
我确实知道Q暴露了getUnhandledReasons()函数和onerror事件,但我真的不想.done()用于每个promise,也不构建某种定时器/间隔来处理未处理的拒绝列表.
其他库,如bluebird暴露onPossiblyUnhandledRejection事件,我不得不承认这是一个更好的解决方案,但仍然不是我正在寻找的.
TL;DR:我希望能够require插入模块react-native并自己处理异常,以防模块不存在(而不是显示RedBox)。
当给定请求的区域设置时,我使用moment.js的逻辑从其预设库(https://github.com/moment/moment/tree/develop/locale )中选择最合适的区域设置。
例如,如果请求en-us,但未找到,则会回落至 ,en依此类推。此逻辑的代码 ( chooseLocale, loadLocale) 可以在这里找到: https: //github.com/moment/moment/blob/develop/src/lib/locale/locales.js
基本上,它会尝试给require定的预设。如果它不存在,它将从require语句中获取异常,捕获它并继续执行下一个选项。
现在,我的问题是尝试将此逻辑与react-native. 该require语句实际上是用react-native's实现的guardedLoadModule,它处理异常(显示红屏)。在我看来,moment的逻辑并没有受到这种逻辑的伤害,因此我想RedBox不显示 。
有什么想法吗?
在我的React/Redux应用程序中,我有一些异步操作.假设用户getData向服务器发起请求.立即GET_DATA_REQUEST被分派和getDataAJAX调用是在它的途中到服务器.
成功或失败后,将相应地分派一个GET_DATA_SUCCESS或多个GET_DATA_FAILURE动作,并将数据呈现给UI.
现在,我希望我的应用程序将历史状态(使用react-router-redux)作为对AJAX回调的反应.意思是,一旦成功,用户被"重定向"到另一个URL(路由),显示依赖于新接收的数据的不同模块.
我意识到在reducer中使用这个功能是一个非常糟糕的主意,因为它不再是纯粹的(URL更改是副作用).
有什么想法吗?
谢谢
javascript ×3
android ×1
bluebird ×1
html5 ×1
ios ×1
momentjs ×1
node.js ×1
promise ×1
q ×1
react-native ×1
react-router ×1
reactjs ×1
redux ×1
redux-thunk ×1
socket.io ×1