在项目开发中会遇到用户在一个页面中多次点击之后,再点击下一个页面。但是会遇到上一个页面的接口请求还在pending当中,第二个页面的接口请求会排队等待。这样就会非常影响用户的体验,所以要做到离开一个页面的同时也中止这个页面上所有尚未完成的接口请求。
问题解决: 构造函数
AbortController.AbortController()创建一个新的AbortController 对象实例。
属性
AbortController.signal 只读返回一个AbortSignal对象实例,它可以用来 with/abort 一个DOM请求
方法
AbortController.abort()中止一个尚未完成的DOM请求。这能够中止fetch 请求,任何响应Body的消费者和流。
具体使用(react中): 1、在componentDidMount中实例化
componentDidMount =() =>{
if ("AbortController" in window) {
window.controller = new AbortController();
this.setState({
signal: controller.signal,
})
}
}
2、请求时添加一个请求对象 { signal }
resetVehicleRedis =()=>{
let HostFormData = new FormData();
HostFormData.append('key','diuber2017');
HostFormData.append("secret_key", '09e8b1b88e615f0d9650886977af33e9');
request('/api/web/admin_setting/resetVehicleRedis',{
method:'POST',
body:HostFormData,
credentials: 'include',
signal:this.state.signal,
}).then((data)=> {}).catch(()=>{})
}
3、离开页面中止请求
componentWillUnmount = ()=>{
if ("AbortController" in window) {
window.controller.abort();
}
}
function numFormat(num) {
if (num.toString().indexOf ('.') !== -1) {
var b = num.toLocaleString();
return b;
} else {
var c = num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
return c;
}
}
借用构造继承,几种组合继承方式
看编程代码说出运行结果: Process.nextTick,setImmediate 和promise.then 的优先级 Process.nextTick,pronise, setImmediate的优先级
实现一个bind函数
千位加逗号
三个继承方式的优缺点 优化列出代码
nodejs的事件循环
bfc
css实现正方形div水平垂直居中
koa1的原理,继承
最后是一个写代码 处理有依赖的异步任务 加重试
diff的原理
es6箭头函数
import和requre的区别
symbol
函数实现正面模板
正方形实现,三角形实现
CSS考了 伪类
实现布局header,content,footer,上中下布局;当content 超出窗口可视区,不显示footer;当content 没超出可视区时,固定footer 在最下面
算法:背包问题、闭包问题、函数柯里化
宽是高的一半的垂直居中,里面有字体也要垂直居中类数组
promise async settimeout先后次序
event类 on once灯方法
==的隐式转化
什么是闭包,
最长子序列
二叉树中序遍历
http握手原理
react 新版本的特性
多空格字符串格式化为数组
bind函数运行结果
点击table的td显示td内容
数字千分位处理
固定日期与当前时间格式化处理
上中下三栏布局
实现一个子类实例可以继承父类的所有方法
Jsonp跨域,js原型继承 & 原型链,promise,二叉树搜寻算法,算法:前端做并发请求控制
杭州一面: 节流函数 Koa中间件机制及代码实现 React Fiber原理以及为什么componentWillRecievedProps会废弃 给定一个数组,一个期望值,找到数组中两个相加等于期望值
深圳前端一面: react生命周期 deepClone 回流重绘 canvas
深圳前端一面:
成都前端:
成都前端:
宏任务微任务
libUA
express ctx 中间键代码实现
vue 发布订阅和虚拟dom代码实现
请实现如下的函数,可以批量请求数据,所有的 URL 地址在 urls 参数中,同时可以通过 max 参数 控制请求的并发度,当所有请求结束之后,需要执行 callback 回调函数。发请求的函数可以直接 使用 fetch 即可
南京前端1面:
上海前端一面:
怎么将一个异步方法promise化,以及实现promise.all()方法
vue单页多页的区别,vue路由实现原理
vue数据驱动视图原理?更新视图的过程是否是同步的操作?
nodejs相关的应用(答:开发命令行工具、web服务,ssr,数据库操作等)
vue项目开发环境如何配置?wepack-dev-server 热更新功能实现原理
express、koa、redis等技术相关应用
[1,2,3].map(parseInt) 执行结果
北京前端一面题:
css 如何实现元素a距离屏幕10px,高度无论宽度怎么改变都是其.5
隐式转换,会问为什么这样
同步异步输出的顺序
argument是数组吗,如果不是怎么变为数组
如何实现for循环内定时器依次输出123
bind实现
函数节流
动态规划算法
北京前端一面:
function request(urls, maxNumber, callback) 要求编写函数实现,根据urls数组内的url地址进行并发网络请求,最大并发数maxNum ber,当所有请求完毕后调用callback函数(已知请求网络的方法可以使用fetch api)
throttle函数实现
3.requestAnimationFrame 和 setTime、setInterval的区别,requestAnimationFrame 可以做什么
4.二叉树路径总和(leetcode 112)
上海前端一面: websocket 原理 http2如何实现多路复用
冒泡算法
前端安全 , DOS
前端缓存、回话机制
跨域
计算机网络知识 TCP UDP
测试 单测、集成测试
自动化集成
Docker 应用
Nodejs express koa
成都前端笔试:
输入一个日期 返回几秒前 几天前或者几月前;
153812.7 转化153,812.7;
用两种方法 一种是正则;
还有关于 bind的一道题;
北京前端一面 ①['a','b'],['A','B'],['1','0'],输出['aA1','aA0','aB1','aB0','bA1','bA0','bB1','bB0'],算法的排列组合问题 ②vue-router路由监听的原理 ③webpack打包的原理,webpack有没有针对打包过程做一些优化提升打包速度 ④请实现如下的函数,可以批量请求数据,所有的 URL 地址在 urls 参数中,同时可以通过 max 参数,控制请求的并发度,实现max个请求执行完之后再执行下max个请求,当所有请求结束之后,需要执行 callback 回调函数。发请求的函数可以直接 使用 fetch 即可 ⑤vue双向绑定的原理 64.深圳抖音 写一个eventBus,元素水平垂直居中,vuex mobox,小程序架构优化 日志系统
二轮:
11.深圳二面: 1,一千个棋子,甲先取乙后取,每次最多取七个最少取一个,问是否有一个方案让甲一定赢 2,3×7的格子,从左上角到右下角,只能往右或者往下,有多少种走法, 3,一个不均匀硬币,如何抛出均匀概率 4,然后有一个生成0到13随机数的算法,如何用它均匀生成0到9随机数 5,两千万高考生成绩如何排序 6,用链表表示的大数求和 12.杭州二面
13.深圳抖音二面: 最近在做项目(痛点,难点,怎么解决),ssr(ssr csr混合怎么处理),小程序架构(带来的优缺点),状态管理,异步编程(各个优缺点)
三轮: 1.自己做得最有成就的项目 2.自己主动承担并是核心的项目 3.项目深度:比如现场实现vue的数据代理等 4.技术广度:什么是微前端等 5.职业发展 6. 1. js实现依赖注入 2. 接口攻击的方式和防御措施 3. https握手过程 4. 设计模式 5. redux和 mobx的区别 6. js多线程如何共享大的数据