const request = new XMLHttpRequest()
request.responseType = 'json'
request.open('GET', '/url', true)
request.onload = () => {
console.log(request.response)
}
request.onerror = () => {
console.log('shits happen!')
}
request.send(null)
而 fetch 则使用已经广泛流行的 Promise API:
fetch('/url').then(res => {}).catch(err => {})
有趣的一点是浏览器中 fetch 的 polyfill 们使用 xhr 实现,而在最新的 spec 中 xhr 是用 fetch 实现的,这意味着 fetch 尽管有更优雅的 API 设计却比 xhr 更 low level
为什么在 Node.js 中使用 fetch?
Node.js 中的 http 模块大部分都提供大而全的功能,比如 request、superagent,而 node-fetch 可以说是最轻量的之一,没有过度的设计。类似的还有 got。
另一个值得一提的就是在不同 JavaScript 环境中使用一致的 API 能带来更好的开发体验,更别说是使用如此优雅设计的 fetch API :)
而对于 cross-runtime 的应用,使用 isomorphic-fetch 可以同时照顾 node 和 browser 环境。
—
MDN: Fetch API – Web APIs