iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >JavaScript中EventLoop有什么用
  • 418
分享到

JavaScript中EventLoop有什么用

2024-04-02 19:04:59 418人浏览 泡泡鱼
摘要

这篇文章主要介绍了javascript中EventLoop有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。想象下,比如浏览器在运行一个

这篇文章主要介绍了javascript中EventLoop有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

JavaScript中EventLoop有什么用

想象下,比如浏览器在运行一个复杂的图像转换算法,因为是单线程的,所以此时浏览器进程被阻塞了,不能进行界面渲染,也不能运行其他代码,你的应用界面会失去和用户的交互。

这一般情况下还不会有大问题,但是当浏览器在同时运行多个类似的算法时,这个问题就很严重了。

有一定经验js开发人员大多都理解代码的异步执行,特别是ajax的使用。

// ajax(..) is some arbitrary Ajax function given by a library
var response = ajax('https://example.com/api');
console.log(response);
// `response` won't have the response

这里response 将不会得到你想要的结果。

而是需要像相面这样,通过 callback函数的方式,获取结果

ajax('Https://example.com/api', function(response) {
  console.log(response); // `response` is now available
});

另外这里面提醒一下,下面的代码, async: false永远都不是一个好主意。

// This is assuming that you're using Jquery
jQuery.ajax({
  url: 'https://api.example.com/endpoint',
  success: function(response) {
    // This is your callback.
  },
  async: false // And this is a terrible idea
});

通过上面的例子,我们应该理解通过 异步 函数,可以帮助我们解决 类似浏览器阻塞问题。

当然还可以通过 setTimeout(callback, milliseconds)实现同样的逻辑。如果你理解了异步,下面代码执行会输出什么呢?

function first() {
  console.log('first');
}
function second() {
  console.log('second');
}
function third() {
  console.log('third');
}
first();
setTimeout(second, 1000); // Invoke `second` after 1000ms
third();

那个这下异步处理机制的原理是什么呢?这里就要引入我们的事件循环Event Loop了

JavaScript中EventLoop有什么用

Event Loop有一个简单的Job(task) - 监视Call Stack和Callback Queue。如果调用堆栈为空,它将从队列中取出第一个事件,并将其推送到调用堆栈,从而有效地运行它。

这种迭代在事件循环中被称为Tick。每个事件只是一个函数回调。

console.log('Hi');
setTimeout(function cb1() { 
  console.log('cb1');
}, 5000);
console.log('Bye');

执行这段代码,下面的调用栈清楚的演示了事件循环的处理流程。

JavaScript中EventLoop有什么用

请注意,setTimeout(...)不会自动将您的回调放在事件循环队列中。

它设置了一个计时器。当计时器到期时,浏览器将你的回调放到事件循环中,以便将来的一些tick会执行。但是,队列中可能还有其他事件已经被添加了 - 您的回调将不会立即执行。

有很多关于开始使用JavaScript中的异步代码的文章和教程,建议您使用setTimeout(callback,0)。
现在你知道Event Loop是怎么做的,以及setTimeout是如何工作的。

你就能更好的理解下面的代码

console.log('Hi');
setTimeout(function() {
  console.log('callback');
}, 0);
console.log('Bye');

尽管等待时间设置为0 ms,但浏览器控制台中的结果如下所示:

Hi

Bye

callback

感谢你能够认真阅读完这篇文章,希望小编分享的“JavaScript中EventLoop有什么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网VUE频道,更多相关知识等着你来学习!

--结束END--

本文标题: JavaScript中EventLoop有什么用

本文链接: https://www.lsjlt.com/news/68417.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中EventLoop有什么用
    这篇文章主要介绍了JavaScript中EventLoop有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。想象下,比如浏览器在运行一个...
    99+
    2024-04-02
  • Node.js中的eventloop怎么用
    这篇文章主要讲解了“Node.js中的eventloop怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js中的eventloop怎么用”吧!...
    99+
    2024-04-02
  • JavaScript中Array.map()有什么用
    小编给大家分享一下JavaScript中Array.map()有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言从经典的...
    99+
    2024-04-02
  • javascript中null有什么用
    这篇文章给大家分享的是有关javascript中null有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 javascript中null是JS提...
    99+
    2024-04-02
  • JavaScript中var有什么用
    这篇文章主要介绍了JavaScript中var有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。var的本质var的本质就是来申明变量的...
    99+
    2024-04-02
  • JavaScript中 cookies有什么用
    JavaScript中 cookies有什么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是CookiesCookie是数据,存...
    99+
    2024-04-02
  • javascript中replace有什么用
    这篇文章主要介绍了javascript中replace有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 j...
    99+
    2024-04-02
  • JavaScript中new有什么用
    这篇文章给大家分享的是有关JavaScript中new有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为了保证可读性,本文采用意译而非直译。当你使用new的时候,会:创建一...
    99+
    2024-04-02
  • javascript中nan有什么用
    这篇文章主要介绍javascript中nan有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! javascript nan是代表非数字值的特殊值,该...
    99+
    2024-04-02
  • Javascript中new()有什么用
    小编给大家分享一下Javascript中new()有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!要创建 Person 的...
    99+
    2024-04-02
  • javascript中location有什么用
    小编给大家分享一下javascript中location有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!location ...
    99+
    2024-04-02
  • javascript中svg有什么用
    这篇文章给大家分享的是有关javascript中svg有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在JavaScript中,svg是指可伸...
    99+
    2024-04-02
  • javascript中有什么作用
    这篇文章主要介绍了javascript中有什么作用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。主要作用:1、嵌入动态文本于HTML页面;2、读写HTML元素;3、对浏览器事...
    99+
    2023-06-15
  • javascript中的let有什么用
    本篇内容主要讲解“javascript中的let有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中的let有什么用”吧! ...
    99+
    2024-04-02
  • javascript中in有什么作用
    这篇文章主要介绍“javascript中in有什么作用”,在日常操作中,相信很多人在javascript中in有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
    99+
    2024-04-02
  • JavaScript中concat()有什么用
    这篇文章将为大家详细讲解有关JavaScript中concat()有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。concat()conca&#...
    99+
    2024-04-02
  • javascript中var有什么作用
    本篇内容介绍了“javascript中var有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • JavaScript中队列有什么用
    这篇文章主要介绍JavaScript中队列有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列...
    99+
    2024-04-02
  • JavaScript中闭包有什么用
    这篇文章主要介绍JavaScript中闭包有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 什么是闭包闭包:函数本身和该函数声明时所处的环境状态的组合。也就是说函数不在其定义的环境中被调用,也能访问定义时所...
    99+
    2023-06-25
  • javascript中Array.reverse()有什么用
    这篇文章给大家分享的是有关javascript中Array.reverse()有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明Array.reverse()方法将数组中的元素反转顺序...
    99+
    2023-06-20
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作