网上都在说是语法的问题, 要写成这样才行
setTimeout(() => reject(new Error('请求超时')), timeOut)
然而我已经是这么写了, 还是有问题.
后来发现是
因为开启调试的原因, 直接运行就没有问题
(/ □ \)
Github存放了一份记录学习过程的Demo, 欢迎查看
https://github.com/YouCii/RNDemo
网上都在说是语法的问题, 要写成这样才行setTimeout(() => reject(new Error('请求超时')), timeOut) 然而我已经是这么写了, 还是有问题.后来发现是因为开启调试的原因, 直接运行就没有问题 (/ □ \)...
很多
React
Native
应用发生致命错误(闪退)是与计时器有关。在某个组件被卸载(unmount)之后,计时器却仍然被激活。为了解决这个
问题
,需要在组件中引入TimerMixin,就可以把你原本的
setTimeout
(fn,
500)改为this.
setTimeout
(fn, 500)(只需要在前面加上this.),然后当你的组件卸载时,所有的计时器事件也会被正确的清除。
这个库并没
记录一个坑,在
react
native
项目调试中,如果打开了Debug JS Remotely,即在chrome中打开了调试控制台,此时项目中
setTimeout
和setInterval的时间间隔会失效,表现为:不管延迟时间设置为多少,都是会马上执行或者没反应。
关掉chrome debug就好了。
这个
问题
折磨了我好久,后来发现它早就出现在
react
native
的Issues中了 http...
在做项目时一般是开启debugger调试模式,这样方便看代码的运行,但也被这个模式坑了。写在定时器内的代码不执行,这个
问题
真的很坑,原因可能是
react
native
是多线程的,而浏览器是单线程的,阻塞了。
解决办法:若是想开一个线程执行某些操作,可以把时间设为0,这样同样会开一个新线程,若是想定时执行某些操作,那只能在debugger调试时把时间设为0,打正式包时把时间改为正常的。...
1:如果在gradle编译的时候出现,Could not expand ZIP .....jar 文件,则可能是因为c:/user/.gradle/cache/..底下已经存在了对应jar文件,冲突了,导致没办法解压对应的jar
猜测:gralde会先查找.gradle目录下,是否有对应的缓存,如果有lib目录又有相同的jar则报错
所以排除对应的重复的jar文件,在lib目录删除即可