0

当我写这个 Dart 代码时:

for(int i=0;i<nbAleas;i++){
   HttpRequest request=new HttpRequest();
   // end of request event
   request.onReadyStateChange.listen((_) {
      if (request.readyState == HttpRequest.DONE &&
         (request.status == 200 || request.status == 0)) {
          handleResponse(request.responseText);
      }
   });

   // error event
   request.onError.listen((Object error)=>handleError(error));
   // method and url
   request.open("GET", urlServiceRest);
   // send the request
   request.send();
}

请求只发送一次。我在服务器上验证了它。如果我这样修改开口:

request.open("GET", urlServiceRest, async:false);

有用。为什么请求应该是同步的?

此外,上述请求是针对具有相同参数的相同 URL 发出的,例如“localhost:8080/random/10/20”。如果我向该 URL 发送异步请求,则如上所述仅发送一个。如果对于第二个请求,我更改了一些参数“localhost:8080/random/11/21”,则发送了两个异步请求。

谁能解释这种奇怪的行为?提前致谢。

4

1 回答 1

0

相同的GET请求肯定会成为浏览器缓存的候选对象。除了在 URL 中添加一些随机垃圾之外,您还可以尝试切换到POST请求;除非响应包含适当的 Cache-Control 或 Expires 标头字段,否则它们是不可缓存的。

于 2014-09-14T14:13:07.547 回答