ES6异步编程笔记
计时器123setTimeout(()=>{ 代码块},等待时间)
无论等待时间多短,异步任务都不会阻塞接下来的代码执行,即使是0也会在同步任务执行完后再执行(宏任务,执行顺序在同步代码、微任务之后)
Promise本身是个类,实例化传入函数执行异步任务,成功执行调用resolve(),失败调用reject(),两个方法都可以接受传入各种参数来传递成功/失败信息
成功(即resolve()被执行)后会自动执行该Promise对象的then()回调,then()方法本身返回一个新Promise对象,可以接着往下then,失败则调用catch()回调。
除了resolve()和reject()外还有个finally(),无论成败都会在结束之后执行
Async
先声明要异步的函数,把传入耗时任务的Promise对象作为返回值(如果任务本身是异步任务(fetch、io等)就直接传入,否则要手动用setTimeout等调整队列)
用async修饰的函数简化后续操作,在async修饰的函数内使用await Promise对象来时async函数内余下任务等 ...
ES6核心特性速通笔记
碎碎念
高考完决定改学后端,经过一番纠结后最终选择了nodejs,凭借java基础和一点点js基础,过了几天文档和一些速通教程,通关ES6,以此笔记作结
模版字符串"a,"+var1 ⇔ `a,${var1}`
解构赋值1.数组中const [a,b,c]=[1,2,3]
等同于
1234const arr=[1,2,3]const a=arr[0]const b=arr[1]const c=arr[2]
便于操作组内某一元素
(补充:可以跳过不要的元素,变量名留空即可。如:*const [a, ,c]=[1,2,3]中a、c赋值了1、3而留空保留括号的的2没有被赋值到新的变量)
2.类中按顺序将内部属性赋值给左侧变量名,也可以用原属性名称:新名称的形式自定义名称或顺序
123456const {username,url:link} = { username: "Binarydev", url: "https://binarydev.top"}con ...
绕过前端登录修复qexo的cdn失效
想写文章的时候打开hexo的后台,发现样式炸了,登录也没反应,f12之后发现js在cdn上的资源无了😨
后台可以更换为其它cdn,但还是得先登录,绕进死胡同了
于是决定用post请求直接登录绕过前端,再去后台改
在html源码中找到登录按钮对应的事件
定位到submit方法
记下请求内容与url
控制台直接post之后被csrf拦下😓需要加在请求头上
最终js代码:
123456789101112131415const USERNAME = "用户名";const PASSWORD = "密码";// 获取CSRF tokenconst csrfToken = document.querySelector('input[name="csrfmiddlewaretoken"]').value;// 手动发起登录请求fetch("/api/auth/", { method: "POST", headers: { "C ...
连接mysql地址为何不用localhost
在连接mysql时,数据库地址选项看似填localhost和127.0.0.1都可以,实则会造成别的问题在部分系统(尤其是win!)中,连接localhost需要对dns先解析(可能因此导致错误),系统还需要判断ipv4/ipv6(拖慢查询速度)因此,用localhost不仅可能导致很多地方出现sql连接错误,整站速度也会史诗级削弱
————😋 ———————在安装群友开源的程序时出现了sql错误,经群友点拨才意识到这个问题在升级flarum时再次遇到sql错误,通过把localhost改为127.0.0.1完美解决
频率分布直方图manim动画源码
b站视频动画manim代码开源
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136from manim import *import numpy as npclass main(Scene): def construct(self): chart = BarChart( values=[0.010,0.015,0.035,0.030,0.010], y_range=[0,0.050, ...
hexo每次远程部署会变动文章更新日期解决方案
踩坑配置了update_option: mtime和order_by: -updated,实现文章按最后修改日期排序,但每次部署完发现都会有个hello world不合时宜地出现在最上面😓 打开发现大部分文章的修改日期都变成了同一个——部署的日期,而自己加了updated参数的不受影响,疑似git本身对文件修改日期的判定机制导致。
于是乎,给每个文章都添加了updated参数,例如
12345---title: Hello Worlddate: 2023-01-01 00:00:00updated: 2023-02-01 00:00:00---
勉强解决,但每次都手动添加太麻烦了。
完美解决方案修改格式模板在文章模板中添加updated参数到Front-matter(修改/scaffolds/post.md),如下
123456---title: {{ title }}date: {{ date }}tags:updated: {{ date } ...
本站自动部署workflow
用于github actions自动部署hexo
非本人原创,网上找来改改就用上了👌
原代码会queued,将ubuntu版本改为latest解决了
1234567891011121314151617181920212223242526272829303132333435363738394041name: Hexo Deployon: push: branches: - masterjobs: build: runs-on: ubuntu-latest if: github.event.repository.owner.id == github.event.sender.id steps: - name: Checkout source uses: actions/checkout@v2 with: ref: master - name: Setup Node.js uses: actions/setup-node@v1 with: n ...
js应在dom加载完成再操作元素
省流:放到body下面或者套上window.onload()
情景修改flarum时,在后台自定义页眉html代码包了块script写js,通过getElementsByClassName(' ')来获取某指定类的标签的对象,遍历检测是否包含特定文本,再修改其文字内容,然而没有生效。💩
原代码:
123456789101112131415161718<script>console.log("test001");var elements = document.getElementsByClassName('TagLabel-name');// 遍历这些元素for (var i = 0; i < elements.length; i++) { console.log("test002"); // 获取当前元素的文本内容 var text = elements[i].textContent || elements[i].innerText; // 检查文本内容是否为'W ...
null合并运算符
由两个问号组成:表达式1??表达式2
当表达式1为null时则使用表达式2,表达式1不为空时选择表达式1
表达式中&与&&区别
单个&时,即使左边已经不成立依旧会继续判断右边的表达式
使用&&时,从左到右判断一旦遇到不成立的值将停止继续执行右边表达式
事例【java】:
在判断一个可能为null的字符串的内容是否为空时:
12String a=null;if(a!=null&a.isEmpty())
左边已判断a!=null不成立,依旧会执行右边isempty,但a是null无法执行方法,所以会导致空指针异常
12String a=null;if(a!=null&&a.isEmpty())
左边判断不成立后,右边不会执行
左边成立后右边继续判断直到全部成立再执行操作
正常运行
“|”与“||”等其它正则运算符同理🙂