JS Promise异步调用为何会阻塞主线程?

js promise异步调用为何会阻塞主线程?

js promise 同步调用为何阻塞?

对于问题中呈现的代码:

async function yyy() {    console.log('yyy调用xxx开始')    let res = await xxx()    console.log('yyy调用xxx结束', res)}            async function xxx() {    return new promise(function(resolve, reject) {    })}

当 xxx 返回的 promise 没有被解析或拒绝时,会出现以下情况:

node.js 环境:

事件循环会检测到没有挂起的任务或微任务,并认为程序已完成,从而退出进程。然而,yyy 函数仍保持挂起状态。

浏览器环境:

await 会持续等待 promise 完成。如果浏览器在执行脚本过程中,可能会将此脚本视为已完成,并继续页面加载或交互。然而,如果脚本是独立执行的,yyy 函数将继续阻塞,直到 promise 得到解析或拒绝。即使用户可以与页面交互,脚本的其余部分也不会执行。

为了更直观地理解阻塞行为,可以调整代码如下:

async function yyy() {    console.log('yyy调用xxx开始')    let res = await xxx()    console.log('yyy调用xxx结束', res)}async function xxx() {    return new Promise(function(resolve, reject) {        while(true) {            console.log('xxx running ...');        }    })}yyy();

在这种情况下,yyy 函数将持续阻塞,而 xxx 函数将在后台无限运行。

以上就是JS Promise异步调用为何会阻塞主线程?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1498804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 20:47:02
下一篇 2025年12月19日 20:47:18

相关推荐

发表回复

登录后才能评论
关注微信