当前位置:首页 > 技术分析 > 正文内容

再谈JS的async/await_js async defer

ruisui883个月前 (02-14)技术分析10

开发JS的程序员都知道,JS天生异步,耗时函数都是异步回调。有哪些是耗时函数?字面意思,就是耗时间的函数,比如:setTimeout,fetch,fs.readFile等,主线程中不建议使用同步函数。

async/await是把异步变同步?它只是简化异步代码,在函数内部类似同步函数,其实还是异步,用await去等待实现同步的效果。所以他只用在函数内部,这样不会阻碍主线程的运行。

async function main(){
    await fetch('https://www.baidu.com');
    console.log('Hello World!');
}

main();
console.log('haha');

上面程序会先显示haha后显示Hello World,main函数不会阻塞整个程序的运行。机制类似于某些语言的“协程”利用事件循环机制来处理后续的回调。

JS中还有一种并发运行的方式就是Workers

const worker = new Worker('worker.js');

主线程是master,可以开启多个worker,worker之间是互相隔离的,但可以通过主线程转发消息。Worker是独立线程,所以会消耗更多的系统资源。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1955.html

标签: aysnc
分享给朋友:

“再谈JS的async/await_js async defer” 的相关文章

基于archlinux的发行版有哪些?

Arch Linux 是一个 Linux 发行版,采用滚动更新的模型,这意味着 Arch Linux 不会定期发布新版本,而是持续接收更新和升级,保持系统与最新软件版本的同步。Arch Linux 以其极简主义、简单性和用户定制为中心的特点而闻名,专注于让用户对其系统配置具有完全控制权。然而,它也以...

迁移GIT仓库并带有历史提交记录

迁移git仓库开发在很多时候,会遇到一个问题。GIT仓库的管理,特别是仓库的迁移。我需要保留已有的历史记录,而不是重新开发,重头再来。我们可以这样做:使用--mirror模式会把本地的分支都克隆。// 先用--bare克隆裸仓库 git clone git@gitee.com:xxx/testApp...

Vue页面传参详解

一、两种方式方法1:name跳转页面this.$router.push({name:'anotherPage',params:{id:1}})另一页面接收参数方式:this.$route.params.id示例:控制台展示:方法2:path跳转页面this.$router.push(...

慕课 SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

本课程以业务驱动技术栈,打造业务相对完整的掌上医疗小程序,解决大家没有好的毕设项目或者求职项目的困境。本课程案例采用前后端分离架构,业务功能完善(既有WEB管理端,也有移动用户端),界面美观,无需艰涩的技术也能做出亮眼的作品。SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序 |...

vue父组件修改子组件的值(通过调用子组件的方法)

props只支持第一次加载这个组件的时候获取父组件的值,后续修改父组件的值得时候子组件并不会动态的更改。然而我们想要通过父组件修改子组件的值要怎么做呢?可以通过ref的方式调用子组件的方法改变子组件的值。子组件<template><div><span>{{data...

千智云低代码平台 v2.0.6发布「平台升级」

【平台简介】千智云低代码应用平台是一款低代码开发+低代码PaaS+SaaS应用中台为一体的应用平台。平台提供了多种应用场景功能及应用组件,满足各种应用的基本实现,可以使用低代码开发的方式,定制化的开发软件项目,并使用平台提供的各种功能,提供了大多数业务场景的支持。也可以将开发的应用发布到平台,成为S...