当我们使用Promises时,XMLHttpRequest.onreadystatechange是否仍会被调用?

时间:2018-02-06 12:29:37

标签: javascript ajax promise

我们假设我使用Promisified API制作Ajax Request,即使这样,event-loop仍然可以调用普通的XMLHttpRequest.onreadystatechange吗?

我的意思是 Promisfying 是一种以顺序风格编写代码的好方法,但是在幕后发生的事情仍然是普通的旧机制吗?有点像class中的ECMASCRIPT 6语法。换句话说,核心API仍然相同?

我无法看到如何将Promise直接注册到event-loop,因为应该有一些逻辑可以解决"或者"拒绝",所以一个简单的包装器必须存在[也可以实现一个承诺,我不知道它是否会导致过多的承诺]?

1 个答案:

答案 0 :(得分:2)

  

让我们说我使用Promisified API来制作Ajax请求,即使这样,事件循环仍会调用普通的旧XMLHttpRequest.onreadystatechange吗?

有几种方法可以发出Ajax请求。

围绕XHR 包裹承诺的库可以使用params事件。它可以使用readystatechangeload个事件。

基于承诺的Ajax库可以完全避免XHR。

它可以使用JSONP。

浏览器本身支持

error,基于承诺,并且不会接近XHR。

  

有点像ECMASCRIPT 6中的类语法。换句话说,核心API仍然是相同的?

没有

Promise是一种标准化的API,不仅仅是与现有代码完全相同的语法。