Js中的Async

mdn官网
Js是单线程的,并不能想向java一样开启多个线程处理任务。
但是Js引入了执行栈任务队列的概念。
同时将要执行的任务分为了同步任务异步任务
程序执行同步任务时,会直接放入执行栈中执行,当程序执行到异步任务时,会先将异步任务放入任务队列中。直到执行栈中任务执行完后,再去执行任务队列中的任务。

除了放置异步任务的事件,"任务队列"还可以放置定时事。

setTimeout()接受两个参数,第一个是回调函数,第二个是推迟执行的毫秒数。
需要注意的是,setTimeout()只是将事件插入了"任务队列",必须等到当前代码(执行栈)执行完,主线程才会去执行它指定的回调函数。要是当前代码耗时很长,有可能要等很久,所以并没有办法保证,回调函数一定会在setTimeout()指定的时间执行。

综上所属:
setTimeout是单线程,类似异步,但不是异步 。
异步:

异步的三种实现方式:
1) 回调函数 ; 回调函数不一定是异步 , 但异步一定有回调函数
2) 事件
3) promise 承诺对象

  • await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。

  • Promise 对象 用于表示一个异步操作的最终完成 (或失败)及其结果值。

  • await 表达式 返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身

  • await 表达式 会暂停当前 async function 的执行,等待 Promise 处理完成。

  • new Promise()中定义的异步任务顺利完成且返回结果值时,会调用 resolve 函数;而当异步任务失败且返回失败原因(通常是一个错误对象)时,会调用reject 函数。

  • async/await 使用了 协程(Generator) 和 微任务(Promise) 两种技术来实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值