您的位置:

Lag()——一个全能的延迟函数

一、lag是什么

在编程的过程中,我们会经常需要使用到延迟函数来等待一段时间后再继续执行后续操作。而lag()则是一个在JavaScript中常用的全能延迟函数。但是lag()并不是JavaScript语言内置的函数,所以我们需要一些方法来实现。

想要实现一个完整的lag()函数,需要定义以下三个参数:

/**
 * delay函数
 * @param {number} duration 想要延迟执行的时间,单位为毫秒
 * @returns {Promise} 返回一个Promise对象,在duration后resolve
 */
function delay(duration) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve()
    }, duration)
  })
}

/**
 * lag函数
 * @param {number} duration 想要延迟执行的时间,单位为毫秒
 * @returns {Promise} 返回一个Promise对象,在duration后resolve
 */
async function lag(duration) {
  await delay(duration)
}

针对以上定义的代码,我们就可以在JavaScript中使用lag()来实现我们想要的延迟效果了。

二、加入Lag战队

Lag值得我们更深入的探讨,Lag战队则更值得我们加入。Lag战队源于卢臻轩老师在2020年初在微博上发布的一条推文:“Lag epidemic is more harmful than coronavirus epidemic in programming community”(编程领域中的Lag疫情比冠状病毒更具破坏性)。这条推文引发了广泛的讨论,也让更多人认识到了Lag的严重性。

Lag本身就是指时间上的延迟,然而延迟对我们的工作影响还可能远超我们的想象。有时候我们可能会因为一些不可预见的延迟而被耽误,而这无形中也增加了我们在紧张项目中的工作压力。因此加入Lag战队,一起拥抱高效迅捷的工作方式,理应成为我们共同的目标。

三、辣根

辣根这个名字,起源于游戏中的“WASD”控制,W、A、S、D四个字母相当于传奇中可能设定的前后、左右键位,而按下Shift之后,会出现跑步的效果,这时便需要“按住Shift(切换到跑步状态)+W(前进)”的操作方式。而桌面环境下,我们也可按下CapsLock键切换大小写,而这时辣根的关键就出来了——即使用CapsLock键作为“切换跑步和行走状态”的键位,这样的话便无需手动切换CapsLock键状态,能达到很好的节约时间和提升效率的效果。

针对某些较通用的软件,比如QQ、微信、sublime text等等,程序员们也早已把CapsLock键映射成其它功能,比如输入中英文、置顶/取消置顶窗口等等。当然,这个映射方式也可以用AutoHotkey等软件实现。

四、Lag behind

在大部分实时系统中,延迟是非常敏感的话题,其中最著名的莫过于《绝地求生》中的操作严重受到Lag的限制。因为对于这一类型的游戏而言,尽可能的流畅才能实现更好的游玩效果。不管是切枪、切弹夹的速度,还是各种干扰措施的快速出招,Lag都可能让玩家失去最佳的时间窗口,从而失去定局的机会。

作为一名开发工程师,也许我们很少会遭遇类似游戏中那种极端情况,然而在实际工作中,我们也常常会因为Lag而在某些关键点处出现不可预见的问题。因此,减轻Lag的影响,或者尽可能避免Lag发生,或许才是我们需要重点关注的地方。

五、喇蛄

喇蛄是指开发过程中遇到的各种困难和出现问题。而Lag则往往成为喇蛄的起源。

在实际开发中,Lag的影响往往会使开发者的情绪产生较大的波动,一方面它延误了工作进程,另一方面又影响了代码的质量。对于一些时间超紧、需求超多的项目来说,Lag更是成为了制约进展的一大因素。因此,在Coding的过程中,我们应提高自身的编程水平,降低代码的出错率,减少Lag对我们产生的影响。

六、Lagoon

Lagoon通常指的是一个湖泊,但在程序员间,Lagoon则指的是别人的代码,我们经常会为了找bug而去深入到别人的代码中。遇到Lag时,我们就可能不得不花费较多的时间去理解和审视其中的细节。因此这也增加了我们前进的心理和生理伤害。因此,尽可能减少Lag对我们产生的影响,对于我们来说也是至关重要的。

七、flag

其实flag在这里并没有特别的含义,仅仅是对小标题的一种延伸而已。在程序员中,flag通常指的是一个旗帜,比如一个用户是否已经登录,又或者是一个任务是否已经正常完成等等。flag的使用可以让我们在遇到问题时能够更方便地快速判断和处理,增加代码的可读性和优化性,是我们在编程中不可或缺的一部分。

八、Lab

在编程中,我们经常会硬钢琴,花大量的时间在不断的重构代码上。而Lag的出现则更可能强化这种行为:我们会认为代码的延迟是由我们自身的代码问题所导致,而去一遍遍地进行调试和修改。然而,在大多数情况下,Lag的产生与我们的代码并没有太多关系。在这种情况下,我们就需要通过一些实验去观察和测量Lag究竟是怎么产生的,才能更好地去应对和解决这些问题。

九、拉歌词选取

Lag的影响因素较多,当涉及到页面或者数据的请求、处理等操作时,页面显示效率往往会受到影响。尤其在一些对时间敏感的操作中,如视频播放、音乐播放等场景下,Lag所带来的影响就更为明显了。因此,我们也应在一些操作中增加loading等提示,使得用户有一定的耐心。在这种情况下,我们有时候也需要提供Lag较小的api接口供其他开发者使用,从而平衡不同页面的加载速度。

需要注意的是,同时请求多个api接口虽然可以帮助我们更快地获取数据,但是也容易引起Lag的问题。因此,我们需要掌握一些基础的技能,避免过度频繁地对接口进行调用。

结尾语

本文主要围绕lag()这一延迟函数展开,从多个角度分析了Lag及其在程序开发中所扮演的角色。我们也应该认识到Lag的影响,培养起更为高效迅捷的自身开发习惯,不断提升代码的优化和质量,从而更好地服务于用户。