我刚刚发现,在this.setState()任何组件中的react 函数是异步的,或者在调用它的函数完成后调用.
现在我搜索并找到了这个博客(http://www.bennadel.com/blog/2893-setstate-state-mutation-operation-may-be-synchronous-in-reactjs.htm)
在这里,他发现setState异步(在堆栈为空时调用)或同步(调用后立即调用)取决于触发状态变化的方式.
现在这两件事很难消化
setState函数在函数内部被调用updateState,但触发updateState函数的内容并不是被调用函数所知道的.setState像JS一样异步是单线程语言,这个setState不是WebAPI或服务器调用,所以必须只在JS的线程上完成.他们是这样做的,以便重新渲染不会停止所有事件监听器和东西,或者存在其他一些设计问题.我在编程竞赛中遇到了这个序列F(n)= F(n-1)-F(n-2); 鉴于F0和F1找到第n个术语
(http://codeforces.com/contest/450/problem/B)(比赛结束)
现在这个问题的解决方案是这样的.序列取值f0,f1,f1-f0,-f0,-f1,f0-f1然后再次f0并重复整个序列.
我知道这个值正在重复,但是找不到这个循环顺序的原因.我搜索了循环次序和序列,但找不到足够的材料可以给出循环原因的实际感觉.
我在做一个问题,我用一个递归函数来创建一个分段树.对于较大的值,它开始给出分段错误.所以我想之前可能是因为数组索引值超出了界限但后来我认为可能是因为程序堆栈太大了.我编写此代码来计算系统给出seg-fault之前允许的最大递归调用次数.
#include<iostream>
using namespace std;
void recur(long long int);
int main()
{
recur(0);
return 0;
}
void recur(long long int v)
{
v++;
cout<<v<<endl;
recur(v);
}
Run Code Online (Sandbox Code Playgroud)
在运行上面的代码之后,我得到v的值为261926和261893和261816,然后才得到分段错误并且所有值都接近这些.
现在我知道这将取决于机器到机器,以及被调用的函数堆栈的大小,但是有人可以解释如何保护安全免受seg-fault的基础知识以及可以记住的软限制是什么.