摘要:面试题题目页面上有一个输入框,两个按钮,按钮和按钮,点击或者分别会发送一个异步请求,请求完成后,结果会显示在输入框中。
面试题题目
页面上有一个输入框,两个按钮,A按钮和B按钮,点击A或者B分别会发送一个异步请求,请求完成后,结果会显示在输入框中。
题目要求,用户随机点击A和B多次,要求输入框显示结果时,按照用户点击的顺序显示,举例:
用户点击了一次A,然后点击一次B,又点击一次A,输入框显示结果的顺序为先显示A异步请求结果,再次显示B的请求结果,最后再次显示A的请求结果。
思考当时被问到的时候,几个想法
写个高阶函数,处理异步请求
怎么保证顺序,我是想将其放入数组中,然后按顺序执行
当时也没写出来,但觉得很有意思。回去思考实践来一下代码:
/** * A的请求;pA(promise对象) * B的请求;pA(promise对象) * @click 事件函数 handler */ let arr = [] let it function* main() { //进来的是pA,pB封装后的方法 const data = yield arr.unshift()() if(arr.length > 0) { it = main() it.next() } } it = main() //封装pA,pB的请求 function pn(promise) { return promise.then(res => it.next(res)) } //当点击按钮发送请求时,将相应的请求加入数组中 function handler(pn) { arr.push(pn) //数组不为空说明请求触发中 if(arr.length = 0) { it.next() } }
说明
点击按钮时,先发放入请求;数组为空说明,还没执行;就先执行;不为空,则加入数组中,等待执行
利用迭代器,遍历数组,执行请求
封装函数fn,思路来自之前看的Generator的异步请求方式
总结以上是我自己思路,觉得蛮有意思的。写下来记录一下
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/105474.html
摘要:但这两个对象的原型指向了同一个实例对象,这个实例对象同样是存在栈内存中的然后指向了一个对象。实际是在的实例对象增加一个属性,并将属性赋值为,但它并没有修改原型链上的属性。侧重理解的指向问题 直接先贴题目吧 function A() { this.name = a this.color = [green, yellow] } function B() { ...
摘要:正如我标题所说,简历被拒。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。三准备面试其实从三月份投递简历开始准备面试到四月份收,也不过个月的时间,但这都是建立在我过去一年的积累啊。 本文是 无精疯 同学投稿的面试经历 关注微信公众号:进击的java程序员K,即可获取最新BAT面试资料一份 在此感谢 无精疯 同学的分享 目录: 印象中的头条 面试背景 准备面试 ...
摘要:正如我标题所说,简历被拒。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。三准备面试其实从三月份投递简历开始准备面试到四月份收,也不过个月的时间,但这都是建立在我过去一年的积累啊。 本文是 无精疯 同学投稿的面试经历 关注微信公众号:进击的java程序员K,即可获取最新BAT面试资料一份 在此感谢 无精疯 同学的分享目录:印象中的头条面试背景准备面试头条一面(Java+项目)头条...
摘要:说明最近看到这样一段代码问三行的输出分别是什么觉得有点意思,和大家一起来聊聊。说到这里,这道题基本上可以解决了,希望大家能听明白我上面说的话,下面的就简单了。 说明 最近看到这样一段代码 function fun(n,o){ console.log(o); return { fun:function(m){ return fun...
阅读 1073·2021-11-15 18:00
阅读 2781·2021-09-22 15:18
阅读 1944·2021-09-04 16:45
阅读 732·2019-08-30 15:55
阅读 3801·2019-08-30 13:10
阅读 1308·2019-08-30 11:06
阅读 1944·2019-08-29 12:51
阅读 2278·2019-08-26 13:55