众所周知,XHR具有一个标志,允许用户在open
中指定异步/同步请求。
我有一个请求项的JSON列表。我有一个名为history
的React状态数组,它显示对用户的每个请求的列表。
我的React组件层次结构如下
App -> HttpRequest -> RequestAutomate
当前,所有事情都像这样
<RequestAutomate Component>
for each request in JSON list:
this.props.submit(request)
<HttpRequest Component>
submit(request)
xhr.open(request.verb, request.url, false) // note async set to false
set the body and header with request.body and request.header
xhr.send
callback if xhr.readyState === 4
this.props.addHistory(request object that was made)
<App component>
addHistory(request)
// add to history state array.
通常,每次修改状态时,React都会重新渲染。由于发送到submit
的每个请求都在准备就绪时(并且仅在准备就绪时)添加到history
数组中,因此我希望我的程序重新呈现,以便用户可以看到他们的请求被一个接一个地添加。 。
但是,当XHR设置为同步模式时,UI会被阻止重新渲染(如果我错了,请纠正我,这里听起来像个白痴)。因此,UI只会同时重新呈现整个请求历史记录。如果我的请求JSON中有30个请求,则UI将重新呈现并同时显示所有30个请求。我希望他们在运行时一次显示一个。有没有办法在异步模式下使用XHR通过回调的某种组合(或某人能够提供的任何解决方案)来实现此功能
编辑:我应该注意使用同步请求的原因。请求进入时必须按顺序运行,因为请求可能先于一个请求(即请求5可能取决于请求1)。结果,我希望每个请求在下一个请求运行之前完成