axios学习笔记(3)-默认设置,create方法,拦截器与取消请求
1.axios的默认配置
在axios配置中存在baseUrl,header等配置,每次做的axios时,不一定所有的配置都要自己写,这时候要做一个默认值,如下://获取按钮const btns = document.querySelectorAll('button');//默认配置(设置完默认设置后就不需要再axios函数里面设置了)axios.defaults.method = 'GET';//设置默认的请求类型为 GETaxios.defaults.baseURL = 'http://localhost:3000';//设置基础 URLaxios.defaults.params = {id:100};//设置url参数axios.defaults.timeout = 3000;//设置超时时间btns[0].onclick = function(){ axios({ // 我们在这里就无需配置这些杂项了 url: '/posts' ...
axios学习笔记2-配置对象的详细说明以及axios的其他方式发送请求
1.配置对象的详细说明
什么是配置对象? config 就是配置对象
官方文档中提到:Request Config{ // url:指明请求去向 url: '/user', // method:设置请求方法(get。post。put等..) method: 'get', // default //baseURL;设定url的基础结构,比如,我们在发送的时候写了好几次http://localhost:3000,这其实就是一个基础结构,这这时我们就可以将baseURL设置成这个值,然后在设置url的时候就子需要设置路径就可以了,axios内部会自动将baseURL和url做一个结合,想成最终的url结构(在项目中经常使用) baseURL: 'https://some-domain.com/api/', //transformRequest: :它可以对请求数据做一个处理,将处理完后的数据在向服务器发送 transformRequest: [function (data, headers) { ...
axios学习笔记(1)-axios初识以及基本使用
1.什么是 axios ?
Axios 是一个基于 Promise 的 http客户端,可以在浏览器,node.Js中去运行,浏览器可以借助 axios 向服务端发送 ajax 请求,同样可以在node.js中发送http请求
它前端最流行的 ajax 请求库
react/vue 官方都推荐使用 axios 发 ajax 请求
官方文档
2.axios 的特点
基于 xhr + promise 的异步 ajax 请求库
浏览器端/node 端都可以使用
支持请求/响应拦截器
支持请求取消
请求/响应数据转换
批量发送多个请求
3.axios 常用语法(返回一个Promise对象)axios(config): //通用/最本质的发任意类型请求的方式axios(url[, config]): //可以只指定 url 发 get 请求axios.request(config): //等同于 axios(config) axios.get(url[, config]): //发 get 请求axios.delete(url[, config]): //发 de ...
Promise拓展-async和await
1.什么是 async(其实就跟then方法是基本一致的) async 顾名思义就是异步的意思,它是ES2017标准中引入的一种新函数,它是Generator函数的语法糖,它是作用是简化异步操作,使得异步操作更加简单
async函数的返回值为 promise 对象
promise 对象的结果由 async 函数执行的返回值决定 //几乎跟then方法是一模一样async function main1(){ //1. 如果返回值是一个非Promise类型的数据 return 'hello!';}async function main2(){ //2. 如果返回的是一个Promise对象(返回的是resolve类型) return new Promise((resolve, reject) => { resolve('OK'); });}async function main3(){ //3. 如果返回的是一个Promi ...
魔改butterfly(3)-给博客添加侧边栏电子时钟
魔改butterfly主题3-给博客添加侧边栏电子时钟实现步骤:
安装必要依赖,在你的博客所在的根目录下,打开cmd命令窗口执行以下命令:npm install hexo-butterfly-clock --save
在站点配置文件 _config.yml(是在themes > butterfly目录下的) 添加配置项:# electric_clockelectric_clock: enable: true # 开关 priority: 5 #过滤器优先权 enable_page: all # 应用页面 exclude: # - /posts/ # - /about/ layout: # 挂载容器类型 type: class name: sticky_layout index: 0 loading: #加载动画自定义
如图所示:
最终效果如图所示:
这篇博客引用了作者为”唐志远“的文章原文链接为:唐志远的博客
Promise中的关键问题
1.一个 Promise 指定多个成功/失败回调函数, 都会调用吗?
答案是肯定的,当 promise 改变为对应状态时都会调用
2.改变 promise 状态和指定回调函数谁先谁后?
(1)都有可能, 正常情况下是先指定回调再改变状态, 但也可以先改状态再指定回调
(2)如何先改状态再指定回调?
① 在执行器中直接调用 resolve()/reject()
② 延迟更长时间才调用 then()
(3)什么时候才能得到数据?
① 如果先指定的回调, 那当状态发生改变时, 回调函数就会调用, 得到数据
② 如果先改变的状态, 那当指定回调时, 回调函数就会调用, 得到数据
3.Promise.then()返回的新 Promise 的结果状态由什么决定?
(1)简单表达: 由 then()指定的回调函数执行的结果决定
(2)详细表达:
① 如果抛出异常, 新 promise 变为rejected, reason 为抛出的异常
② 如果返回的是非 promise 的任意值, 新 promise 变为resolved, value 为返回的值
③ 如果返回的是另 ...
Promise中的常用API
Promise中的常用API1.Promise中的构造函数 : Promise (excutor) {}
(1)executor 函数: 执行器 (resolve, reject) => {}
(2)resolve 函数: 内部定义成功时我们调用的函数 value => {}
(3)reject 函数: 内部定义失败时我们调用的函数 reason => {}
说明: executor 会在 Promise 内部立即同步调用,异步操作在执行器中执行
函数解析:我们可以通过 new Promise 来实例化对象,在new的时候,实例化需要接收一个参数,这个参数是一个函数类型的参数(可为箭头函数,也可为匿名函数),这个函数当中有两个形参:resolve 和 reject ,这两个形参也是一个函数,是Promise内部定义的,当Promise内异步任务为成功是就调用resolve,失败则调用reject
// 1) 创建 promise 对象(pending 状态), 指定执行器函数const p = new Promise((resolve ...
Promise的介绍
1.Promise 是什么?
1.抽象表达:
1)Promise 是一门新的技术(ES6 规范)
2)Promise 是 JS 中进行异步编程的新解决方案备注:旧方案是单纯使用回调函数(解决回调地狱)
2.具体表达:
1)从语法上来说: Promise 是一个构造函数
2)从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/ 失败的结果值
2.promise 的状态改变一般有三种
pending: 它的意思是 “待定的,将发生的”,相当于是一个初始状态。创建Promise对象时,且没有调用resolve或者是reject方法,相当于是初始状态。这个初始状态会随着你调用resolve,或者是reject函数而切换到另一种状态。
reslove: 也叫fulfiller表示解决了,就是说这个承诺实现了。 要实现从pending到resolved的转变,需要在 创建Promise对象时,在函数体中调用了resolve方法(即第一个参数)。
rejected: 拒绝,失败。表示这个承诺没有做到,失败了。要实现从pending到rejecte ...
ES6中的继承以及class中的get和set和class类中的this指向问题
继承
ES6中的class可以看作是一个语法糖,他的绝大部分功能,ES5都 可以做到,新的class写法只是让对象原型的写法更加的清晰,更加的面向对象编程的语法而已
继承顾名思义就是低级向高级获取东西,在ES6中新增一些继承的关键字,用于简化class类的操作
ES5继承
基本思想:利用原型链糖一个引用类型继承另一个引用类型的属性和方法(即通过prototype和构造函数实现)
实质:将父类添加到prototype原型对象上;
ES6继承:
基本思想:通过exttends关键字实现继承,资料类可以继承父类中所有的方法和属性,子类必须在constructor方法中调用super方法,因为新建的子类没有自己的this对象,而是继承了父类的this对象;
实质:利用extends关键字继承父类,然后继承父类的属性和方法
extends关键字使用:
解决了代码的复用性;
使用extends关键字实现继承
子类可以继承父类中所有的方法和属性;
子类只能继承一个父类(单继承),一个父类可以有多个子类
子类的构造方法中必须有super()来指定调用父类的构造方法,并且位于子类构造方法中的第一行 ...
Es6中的类与对象
Es6中的类和对象
相较于面向过程,面向对象更加贴近与我们的实际生活,可以使用面向对象来描述现实世界,但事物都分为具体事物和抽象事物。
如一个手机就是一个抽象的事物(泛指的)
但是一台苹果X就是一个具体的事物(特指的)
面向对象的思维特点:
1.抽取(抽象)对象的共用属性和行为方法组织(封装)成一个 类(模板)
就像是每一台手机都能打电话,又有手机屏幕,都有电池,都有一个价格等…这就是手机的共同属性
对 类 进行实例化,获取类的对象,如我们可以封装一个手机的 类 ,里面有名字,品牌,价格等属性,当我们调用这个 手机类 的时候,给他们赋予不一样的属性值就能产出 不同的手机,如我们给这个手机类的名字属性赋予:小米10, 品牌属性赋予:小米,那么再实例化这个类就能产出一台小米10的手机了
所以面向对象编程考虑的就是有哪些对象,按照这些对象的思维特点,抽取它们的共同属性或方法,对象不断的创建出带有共同属性或者方法的对象,使用它们,指挥他们做事情
什么是对象?
在现实生活中,万物皆对象,对象是一个具体的事物,比如一辆车,一本书,一个人 等…
在 JavaScript 中,对象是一组 ...