Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular JS:rest API被延迟调用_Javascript_Angularjs_Rest - Fatal编程技术网

Javascript Angular JS:rest API被延迟调用

Javascript Angular JS:rest API被延迟调用,javascript,angularjs,rest,Javascript,Angularjs,Rest,我试图从AngularJS代码中调用一些RESTAPI。当查看页面加载时间时(比如通过开发人员工具->Firefox等浏览器中的网络),页面中的图标会快速加载。然后有大约100到200ms的间隔,之后甚至调用restapi。我在Plunkr中使用了一个简单的示例: 我在我的原始代码中使用了ng repeat。我最初认为,缓慢是由于这一点。但是,正如您在上面看到的,即使使用一个简单的RESTAPI调用,延迟也会发生。另外,请参见下面显示页面加载的屏幕截图。您可以看到页面加载时间为80ms。然后会

我试图从AngularJS代码中调用一些RESTAPI。当查看页面加载时间时(比如通过开发人员工具->Firefox等浏览器中的网络),页面中的图标会快速加载。然后有大约100到200ms的间隔,之后甚至调用restapi。我在Plunkr中使用了一个简单的示例:

我在我的原始代码中使用了ng repeat。我最初认为,缓慢是由于这一点。但是,正如您在上面看到的,即使使用一个简单的RESTAPI调用,延迟也会发生。另外,请参见下面显示页面加载的屏幕截图。您可以看到页面加载时间为80ms。然后会有一个间隔,直到240ms,之后才会调用RESTAPI。在80毫秒和240毫秒的时间范围内发生了什么?为什么不能在80ms时调用RESTAPI


有人能帮忙吗?

当然,请求不会在准确的80毫秒内发送,因为
$http
方法中有一些代码,比如读取配置、构建数据、创建http请求对象等等。所有这些都需要时间,这会导致延迟,直到请求实际在网络上

在80毫秒和240毫秒的时间范围内发生了什么

这是
$http
方法中的代码所花费的时间


确切地说,启动angular应用程序、创建
restFactoryService
、进行
restFactoryService.getInstanceDetails()
函数调用也需要时间,

我更新了you plunker并添加了一系列
性能。now()
以获取详细信息。第一个时间戳作为
head
的第一个元素放置在html中

以下是我得到的[所有结果均以毫秒为单位]——具体数字可能因运行而异:

Application ready after: 207.77.
Window loaded after: 281.24 
Http requested started after 13.47 after ready.
Http response came after 161.80 after the request.
$http call took less than 0.88.
这里有更新


似乎需要大约200毫秒来解析所有html和javascript。顺便说一句,angular开始在
DOMContentLoaded
()上引导你的应用程序。

如果你在chrome上检查plunker,你会发现没有这么长的延迟。在IE 11上也有一个很小的差距(比如在firefox中),但我看到
问候语
Web服务正在等待检索
angular.min.js.map
文件。这可能表示此浏览器对网页使用的最大连接数较少。之后,如果重新运行代码,则找不到间隙。

我不确定是否理解您的问题。。。您会问“为什么这个ajax请求需要一些时间”?您是否在请求之前放置了
调试器
,以查看其到达的时间?@enguerranws我的问题是:80ms后,我们在浏览器中看到直到240ms才发生任何事情。为什么会出现这种暂停?@Jean网络上没有发生任何事情,但是JS引擎可能正在忙于其他事情(同步解析加载的脚本,等待就绪事件等)。我建议您至少打两个电话,忽略这个电话。由于初始化所需的组件,可能会有一些延迟。实际上,调用
$http
需要约1ms,引导应用程序的时间少于@artur grzesiak:这里的要点是:请求不会立即发送,初始化应用程序(我的回答中提到了一些)并进行调用需要时间。我把。。。因为我不想谈太多细节。我只想
提高意识
请求只在初始化后发送,进行函数调用,…如果需要缓解差距,我建议使用一些预加载技术。
Application ready after: 207.77.
Window loaded after: 281.24 
Http requested started after 13.47 after ready.
Http response came after 161.80 after the request.
$http call took less than 0.88.