你所不知道的setInterval
在《你所不知道的setTimeout()》记载了setTimeout()
相关,此篇则整理了下setInterval()
;作为拥有广泛应用场景(定时器,轮播图,动画效果,自动滚动等等),而又充满各种不确定性的这setInterval()
,自当先洞悉它,才能很好的驾驭它。
在《你所不知道的setTimeout()》记载了setTimeout()
相关,此篇则整理了下setInterval()
;作为拥有广泛应用场景(定时器,轮播图,动画效果,自动滚动等等),而又充满各种不确定性的这setInterval()
,自当先洞悉它,才能很好的驾驭它。
最近在看Canvas的一些动画实例当中,时常看到lerp()
这个函数,一直以来并不知道这个函数起什么作用,有什么特性。今天花了一些时间,Google了一下,才知道这个函数是线性插值。那么线性插值是个什么鬼?他在一些程序中又起啥作用?这就是这篇文章要探讨和学习的。
Chrome 55 中默认情况下启用异步函数,坦率地讲,它们的作用相当不可思议。 可以利用它们像编写同步代码那样编写基于 Promise 的代码,而且还不会阻塞主线程。 它们可以让异步代码“智商”下降、可读性提高。
众所周知,JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着。在事件队列中加一个延时,这样的问题便可以得到缓解。
JS 中最基础的异步调用方式是 callback
,它将回调函数 callback
传给异步 API,由浏览器或 Node 在异步完成后,通知 JS 引擎调用 callback
。对于简单的异步操作,用 callback
实现,是够用的。但随着负责交互页面和 Node 出现,callback
方案的弊端开始浮现出来。 Promise 规范孕育而生,并被纳入 ES6 的规范中。后来 ES7 又在 Promise 的基础上将 async
函数纳入标准。此为 JavaScript 异步进化史。
对于 JavaScript 的异步编程我们早就谈得太多了,我们为了处理 Callback Hell
问题已经做了太多太多了,从 Promise 到 generator
再到 async/await
,JavaScript 这个惊天巨坑算是勉强填完了。关于 Promise 、 generator
以及 aysnc/await
这些具体的技术怎么用,这里就不细谈了,我们更多谈谈 “形而上” 的东西。
异步编程对JavaScript语言太重要。JavaScript语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。ES6将JavaScript异步编程带入了一个全新的阶段,ES7的Async
函数更是提出了异步编程的终极解决方案。
Web存储机制,在这里主要聊有关于Web Storage API提供的存储机制,通过该机制,浏览器可以安全地存储键值对,比使用cookie更加直观。接下来简单的了解如何使用这方面的技术。
在JavaScript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用。既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回。因为函数是第一类对象,我们可以在JavaScript使用回调函数。在下面的文章中,我们将学到关于回调函数的方方面面。回调函数可能是在JavaScript中使用最多的函数式编程技巧,虽然在字面上看起来它们一直一小段JavaScript或者jQuery代码,但是对于许多开发者来说它任然是一个谜。在阅读本文之后你能了解怎样使用回调函数。
JavaScript 由于某种原因是被设计为单线程的,同时由于 JavaScript 在设计之初是用于浏览器的 GUI 编程,这也就需要线程不能进行阻塞。所以在后续的发展过程中基本都采用异步非阻塞的编程模式。简单来说,异步编程就是在执行一个指令之后不是马上得到结果,而是继续执行后面的指令,等到特定的事件触发后,才得到结果。也正是因为这样,我们常常会说: JavaScript 是由事件驱动的。