Fetch

Fetch

之前所写的Ajax都是利用XMLHttpRequest实现的,可是也不难发现XMLHttpRequest并不是专为Ajax实现的,并且它也没有关注分离的原则,配置和调用方式比较混乱,不太友好,而基于Promise的Fetch就比较友好

相关文档:https://developer.mozilla.org/zh-CN/docs/Web/API/GlobalFetch/fetch

简单介绍

fetch(input[, init]);

  • input,定义要获取的资源,可以是URL或Request对象
  • init,可选择的参数,配置项对象,包括method、headers、body等信息
  • 返回值:一个promise对象,resolve时回传Response对象

示例如下:

var myImage = document.querySelector('img');

var myRequest = new Request('one.jpg');  //非URL,而是一个Request对象

fetch(myRequest).then(function(response) {
  return response.blob();
}).then(function(response) {
  var objectURL = URL.createObjectURL(response);
  myImage.src = objectURL;
});

含有第二个参数的示例:

var init = {   method: 'GET',
               headers: myHeaders,
               mode: 'cors',
               cache: 'default' };
fetch(URL, init).then(function(response) {
    ...
})               

使用

发送JSON请求

fetch(url).then(function(response) {
      return response.json();
}).then(function(data) {
      console.log(data);
}).catch(function(e) {
      console.log("err",err);  //错误处理
});

可以使用ES6的箭头函数进行简化:

fetch(url).then(response => response.json()).then(
  data => console.log(data)).catch(err => {
  console.log(err);  
})

Fetch除了语法简洁,语义化明显的优点之外,还支持async/await

async/await

async/await适用于执行一个耗时操作或者是异步操作,使用async执行所写的函数代码,而在函数内部使用await关键字来达到异步的目的

function sleep(time) {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve();
    }, time);
  });
}
let test = async function () {
    console.log('start');
    await sleep(3000);  //sleep 为一个执行需要耗费 3s 的函数
    console.log('end');
};
test();

运行结果:

这里写图片描述

Fetch与async/await配合使用

let test = async function () {
    try {
        let response = await fetch(url);
        let data = response.json();
    } catch {
        ....
    }   
};

在前面的例子中,await 后面跟着 Promise 对象,表示等待resolve才会继续向下执行,如果 Promise 被 reject() 或抛出异常则会被外面的 try...catch 捕获

总结

目前而言,刚接触Fetch,但是确实很喜欢它的简洁,和async/await配合使用感觉还不错

### IntelliJ IDEA Fetch 功能概述 IntelliJ IDEA 的 `Fetch` 操作主要用于 Git 版本控制系统中的远程仓库同步功能。它允许开发者从远程仓库获取最新的更改而不影响本地的工作副本[^1]。具体来说,`Fetch` 不会自动合并或修改当前分支的状态,而是将远程更新拉取到本地的远程跟踪分支上。 以下是关于 IntelliJ IDEA 中 `Fetch` 操作的一些重要细节: #### 如何执行 Fetch 操作 可以通过以下方式在 IntelliJ IDEA 中触发 `Fetch` 操作: 1. 使用快捷键组合:`Ctrl + T` 或者通过菜单栏导航至 **VCS -> Git -> Fetch**。 2. 右击项目的根目录,在上下文菜单中选择 **Git -> Fetch**。 此操作完成后,IDE 将显示来自远程仓库的新提交记录以及分支状态的变化[^4]。 #### Fetch 和 Pull 的区别 虽然两者都涉及从远程仓库获取数据,但它们的功能有所不同: - **Fetch**: 仅下载远程改动并存储于本地对应的远程分支下,不会直接影响工作区文件。 - **Pull**: 是先执行一次 Fetch,随后立即尝试将这些变化应用(即合并)到当前活动分支之上。 因此,在团队协作开发过程中,建议频繁使用 Fetch 来了解其他成员所做的贡献而无需立刻改变自己的代码环境[^3]。 ```bash git fetch origin main ``` 上述命令演示了如何手动运行一个标准的 Git fetch 命令来获取指定远程分支上的最新变更。 #### 自动化设置定期 Fetch 为了保持持续集成管道畅通无阻或者及时发现冲突问题,可以配置定时任务来进行自动化 Fetch 流程。这通常涉及到脚本编写与调度程序安排相结合的方式实现[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值