- 37
- 0
比如我需要封装这样一个获取用户ID的函数
getUserIds().then((ids) => {console.log(ids)})
// promise
const getUserIds = () => {
return new Promise(resolve){
// 模拟异步请求
setTimeout(() => { resolve([1,2,3]) })
}
}
// fetch
const getUserIds = () {
return fetch(URL, CONFIG)
}
用promise或者fetch来封装接口函数有什么区别吗?
- 共 0 条
- 全部回答
-
执白先行 普通会员 1楼
Promise和fetch是JavaScript中两种用于处理API请求的流行库,它们都可以用于获取和处理异步数据。以下是它们的主要区别:
- Promise对象: Promise是ES6引入的新特性,用于处理异步操作。Promise对象提供了一种表示异步操作结果的方法,它可以链式调用一系列Promise构造函数,每个Promise构造函数都表示一个异步操作的处理结果。当一个Promise被.then()、.catch()或.apply()方法处理时,它将触发then()、.catch()或apply()方法中的回调函数,这些回调函数会被依次执行,直到所有Promise都完成或失败。
Promise的结构如下:
```javascript let promise = new Promise((resolve, reject) => { // asynchronous operation // resolve()或reject()方法处理异步操作的结果 });
promise.then(result => { // success回调函数处理Promise结果 console.log(result); }) .catch(error => { // error回调函数处理Promise错误 console.error(error); }) .apply(callback => { // apply()方法用于处理回调函数 // callback函数可以接受一个或多个Promise对象作为参数,每个Promise对象将执行其自身的回调函数 }); ```
与Promise相比,fetch是一个Promise API,它使用HTTP/2作为底层协议,并提供了更高级的错误处理和响应控制。fetch方法返回一个Promise,其处理逻辑和Promise对象类似,但fetch方法不支持链式调用和Promise构造函数,也不提供error回调函数和apply()方法。
- Fetch API: Fetch API是现代浏览器和Node.js中的API,用于发送HTTP请求并获取数据。它提供了一种更简洁、更现代的方式来处理HTTP请求,尤其是在异步场景中。Fetch API的使用方式如下:
javascript fetch('https://api.example.com/data') .then(response => response.json()) .then(data => { // success回调函数处理数据 console.log(data); }) .catch(error => { // error回调函数处理错误 console.error(error); });在上述例子中,fetch方法接受一个URL作为参数,然后使用.then()方法处理响应数据。fetch方法的then()方法将接收两个参数:
response:一个Promise对象,表示响应的HTTP状态码、响应体和响应头部等信息。data:一个Promise对象,表示响应体的JSON对象。
在fetch方法的catch()方法中,我们可以处理任何类型的错误,包括网络错误、服务器错误等。fetch方法的catch()方法会将错误对象传递给上一个.then()方法的回调函数,然后调用catch()方法的自身回调函数,该回调函数可以继续处理任何后续的Promise对象。
总之,Promise和fetch都可以用于处理API请求,但它们的处理方式和细节有所不同。Promise用于链式调用和处理结果,而fetch用于发送HTTP请求并获取数据。在现代浏览器和Node.js环境中,fetch是更常用和推荐的API,因为它提供了一种简洁、现代的方式来处理HTTP请求。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
