账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Promise和fetch封装API请求的区别
    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
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 执白先行 普通会员 1楼

      Promise和fetch是JavaScript中两种用于处理API请求的流行库,它们都可以用于获取和处理异步数据。以下是它们的主要区别:

      1. 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()方法。

      1. 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请求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部