sleep函数作用是让线程休眠,等到指定时间在重新唤起。那么在js中如何优雅的来实现呢?
function pausecomp(millis){
var date = new Date(),curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
使用:
pausecomp(1000);
console.log('fly63');//会在1秒后大于fly63
虽然很实现了延展等待,但这是一个非常可怕的解决方案,最好不要再实际项目中使用。因为这是一种死循环堵塞,CPU占用会很高,如果开着占CPU很高的程序(如有一堆flash的页面),很容易被卡死。
注意:语句继续执行就只能用while()空转的方法,判断到了时间就break。不过这个方法也不是真正sleep。虽然JavaScript不直接支持sleep,但是通过setTimeout可以模拟,即使是for循环中的sleep都是可以模拟的。
1,使用async和await
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function test() {
await sleep(1000);
console.log('fly63');
}
test();
注意,
2,使用then
如果不使用async和await,我们可以通过then来解决:
sleep(1000).then(()=>{
console.log('fly63')
})
这估计是项目中最常用的方式了,尤其是之前的老项目,兼容性最好。
function sleep(ms, callback) {
setTimeout(callback, ms)
}
sleep(1000, () => {
console.log('fly63')
})
generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。
function* sleep(ms){
yield new Promise((resolve,reject)=>{
setTimeout(resolve,ms);
})
}
sleep(1000).next().value.then(()=>{
console.log("fly63")
})
把函数以数据的形式去使用,并解锁一些强大的模式。接受和/或返回另外一个函数的函数被称为高阶函数。之所以是高阶,是因为它并非字符串,数字或布尔值,而是从更高层次来操作函数。
首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。
给你的代码增加一点点函数式编程的特性,最近我对函数式编程非常感兴趣。这个概念让我着迷:应用数学来增强抽象性和强制纯粹性,以避免副作用,并实现代码的良好可复用性。同时,函数式编程非常复杂。
在vue,react等框架大量应用之前,我们需要使用jQuery或者原生js来操作dom写代码,在用原生js进行事件绑定时,我们可以应用DOM2级绑定事件的方法,即:元素.addEventListener(),因为兼容性,还有:
css3中函数:用于动态计算长度值。(注意事项:运算符前后都需要保留一个空格,例如:width: calc(100% - 10px));任何长度值都可以使用calc()函数进行计算;
js函数式编程:是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。
compose函数可以将需要嵌套执行的函数平铺,嵌套执行就是一个函数的返回值将作为另一个函数的参数。我们考虑一个简单的需求:
JS深拷贝概念并不新鲜,但是真正要真正理解原理还是有点难度的。这也是JS语言精粹之一吧。因为JS对于对象的赋值使用的是浅拷贝,其中一个实例变量的赋值会影响到所有指向该对象的变量
在旺球体育在线面试中面试官基本都会问到什么是匿名函数,什么是闭包函数。匿名函数顾名思义就是没有名字的函数,通常我们所写的函数都是这样的:
filter用于对数组进行过滤。 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。注意:filter()不会对空数组进行检测,不会改变原始数组
内容以共享,参考,研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!