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