Angular JS $ http promise对象 - 它是如何工作的?

时间:2016-11-20 13:22:18

标签: angularjs xmlhttprequest angular-promise angular-http

全部, 我是Angular框架的初学者,并且一直在阅读$ http服务。我以为我理解了Angular JS中的Promise对象,直到下面的问题出现在我脑海中。你能帮我理解一下吗?

- 当我从Angular进行REST调用时,Angular工作在执行调用REST API的js中的其他步骤之前不会进行其余调用。这是因为它是单线程的。好的,我明白了。那么它何时执行REST调用?可能是在当前JS完成所有指令之后?如果是的话,

  • 为什么我们甚至称它为异步?
  • 其次,在它执行REST API期间(假设REST API导致输出不是2秒之前),在调用REST API之后,Angular会等待2秒而不做任何事情吗?

如果$ http服务一看到它就会异步执行REST API,

  • 谁生成第二个线程来执行REST API?框架?如果是这样,那么他们是否使Javascript不再是单线程的?
  • 其次当服务返回而主线程甚至没有完成执行我的js中的所有行时,Angular / jQuery是否会执行.then函数中编码的指令,让主线程中的指令等待?

非常感谢你的帮助!

炳廷

2 个答案:

答案 0 :(得分:1)

  

当我从Angular进行REST调用时,Angular工作在执行调用REST API的js中的其他步骤之前不进行其余调用

没有。那是不对的。它立即发送请求。但它不会阻止,直到响应回来,因为这可能需要花费大量时间并完全冻结应用程序。因此,它会注册一个回调,稍后当响应可用时,将调用此回调。这就是异步的原则。

  

谁产生第二个线程来执行REST API

没有第二个帖子。

最简单的方法是考虑HTTP响应是一个事件,就像点击或按键一样。所有唯一的线程都是等待下一个事件并在循环中对它作出反应。

答案 1 :(得分:0)

首先,它不会阻止执行,它会立即发送请求。基本上它遵循使用回调函数概念的promise模式。因此,只要API返回响应,它就会调用回调函数并恢复该过程。

没有像第二线程这样的概念。当HTTP返回响应时,执行不会停止。它只是调用它的回调方法,然后执行剩余的代码行