百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

setTimeout、Promise、Async/await的区别

liuian 2025-03-25 15:21 41 浏览

1. setTimeout

console.log('script start')	//1. 打印 script start
setTimeout(function(){
    console.log('settimeout')	// 4. 打印 settimeout
})	// 2. 调用 setTimeout 函数,并定义其完成后执行的回调函数
console.log('script end')	//3. 打印 script start
// 输出顺序:script start->script end->settimeout

2. Promise

Promise本身是同步的立即执行函数, 当在executor中执行resolve或者reject的时候, 此时是异步操作, 会先执行then/catch等,当主栈完成后,才会去调用resolve/reject中存放的方法执行,打印p的时候,是打印的返回结果,一个Promise实例。

console.log('script start')
let promise1 = new Promise(function (resolve) {
    console.log('promise1')
    resolve()
    console.log('promise1 end')
}).then(function () {
    console.log('promise2')
})
setTimeout(function(){
    console.log('settimeout')
})
console.log('script end')
// 输出顺序: script start->promise1->promise1 end->script end->promise2->settimeout

当JS主线程执行到Promise对象时,

  • promise1.then() 的回调就是一个 task
  • promise1 是 resolved或rejected: 那这个 task 就会放入当前事件循环回合的 microtask queue
  • promise1 是 pending: 这个 task 就会放入 事件循环的未来的某个(可能下一个)回合的 microtask queue 中
  • setTimeout 的回调也是个 task ,它会被放入 macrotask queue 即使是 0ms 的情况

3. async/await

async function async1(){
   console.log('async1 start');
    await async2();
    console.log('async1 end')
}
async function async2(){
    console.log('async2')
}

console.log('script start');
async1();
console.log('script end')

// 输出顺序:script start->async1 start->async2->script end->async1 end

async 函数返回一个 Promise 对象,当函数执行的时候,一旦遇到 await 就会先返回,等到触发的异步操作完成,再执行函数体内后面的语句。可以理解为,是让出了线程,跳出了 async 函数体。

举个例子:

async function func1() {
    return 1
}

console.log(func1())

很显然,func1的运行结果其实就是一个Promise对象。因此我们也可以使用then来处理后续逻辑。

func1().then(res => {
    console.log(res);  // 30
})

await的含义为等待,也就是 async 函数需要等待await后的函数执行完成并且有了返回结果(Promise对象)之后,才能继续执行下面的代码。await通过返回一个Promise对象来实现同步的效果。

相关推荐

win7旗舰版好还是win8好(win7好还是win7旗舰版好)

相比较来说,win7系统更好。1、win8只不过是一个win10的过度系统,使用起来并不是很流畅。2、而win7系统已经经历了十数年的考验,拥有很强大的稳定性和兼容性。3、如果我们是在win7和win...

如何修改电脑默认浏览器(如何更改电脑中的默认浏览器)

Windows系统:1.打开“设置”应用。2.点击“应用”。3.点击“默认应用”。4.在“网络浏览器”下,选择你想要设置为默认浏览器的应用。macOS系统:1.打开“Safari”浏览器...

免费下载360杀毒软件手机版(给我下载一个360杀毒软件)

360手机卫士苹果版来自奇虎360推出的一款iPhone手机管理软件,360手机卫士苹果版推为iOS用户提供专业、完善和高效的移动设备管理服务,360手机卫士手机版可以实现流量监控、电池管家、隐私空间...

hotmail官网邮箱登录(hotmail邮箱网址)
  • hotmail官网邮箱登录(hotmail邮箱网址)
  • hotmail官网邮箱登录(hotmail邮箱网址)
  • hotmail官网邮箱登录(hotmail邮箱网址)
  • hotmail官网邮箱登录(hotmail邮箱网址)
office2019专业版永久密钥(word2019专业版密钥)
  • office2019专业版永久密钥(word2019专业版密钥)
  • office2019专业版永久密钥(word2019专业版密钥)
  • office2019专业版永久密钥(word2019专业版密钥)
  • office2019专业版永久密钥(word2019专业版密钥)
qq手机号未验证升级密保(qq手机号未验证就不能用了吗)

QQ更换密保手机可以选择通过密保问题进行验证,而不需要以前绑定的手机号码进行验证。更换QQ手机绑定号码的方法是1登录电脑QQ2选择工具-安全-安全中心首页3.选择右边更换密保手机选项4..点击更换密保...

电脑总是蓝屏自动重启(电脑蓝屏自动重启报错whea uncorrectable)
  • 电脑总是蓝屏自动重启(电脑蓝屏自动重启报错whea uncorrectable)
  • 电脑总是蓝屏自动重启(电脑蓝屏自动重启报错whea uncorrectable)
  • 电脑总是蓝屏自动重启(电脑蓝屏自动重启报错whea uncorrectable)
  • 电脑总是蓝屏自动重启(电脑蓝屏自动重启报错whea uncorrectable)
怎样恢复被删除的好友(如何恢复被误删的好友)
  • 怎样恢复被删除的好友(如何恢复被误删的好友)
  • 怎样恢复被删除的好友(如何恢复被误删的好友)
  • 怎样恢复被删除的好友(如何恢复被误删的好友)
  • 怎样恢复被删除的好友(如何恢复被误删的好友)
开机蓝屏0x000000ed(开机蓝屏0x0000007b怎么解决)

停止代码0x000000ED蓝屏错误,通常称为“UNMOUNTABLE_BOOT_VOLUME”,表示计算机在尝试访问或加载操作系统时遇到问题。这通常是由硬盘驱动器或文件系统损坏引起的,也可能是由...

ps软件在线使用(ps在线工具)

?选择工具是最基本的PS工具之一,具有对图层进行移动和对齐的功能,工具栏上是个亿带十字的箭头图标(区别于路径选择工具,后者是一个标准的箭头图标)。?在使用PS工具的时候,我们要注意鼠标状态的变...

win7平板电脑(win7平板电脑好用吗)

方法一:平板模式只需在操作中心快速切换:1、点击右下角的操作中心图标,在弹出的窗口中点击“平板模式”实现开启或关闭;2、如此一来就能轻松实现平板模式和桌面模式的快速切换了。方法二:系统设置修改1...

windowsxp是哪一年发布的(windowsxp是什么时候发布的)

WindowsXP是微软公司研发的计算机操作系统,于2001年10月25日正式发布。其名字中“XP”的意思来自英文中的“体验”(Experience)。[1][2]WindowsXP使用了Luna...

win8没有无线网络连接(win8无线设备没有wifi)

当Win8.1的网络连接不可用时,您可以尝试以下几种方法来解决问题:1.检查物理连接:确保网络电缆正确连接到计算机和路由器/调制解调器。如果使用的是无线网络,请确保无线适配器已启用,并且与正确的网络...

手机系统重装教程(手机系统如何重装系统)
手机系统重装教程(手机系统如何重装系统)

手机怎么重装系统?1首先我们是需要做好个人数据的备份的,只要做好联系人,文件夹,重要的软件和照片的备份,使用专业的备份软件就可以,我们找到设置然后找到云服务点击进去然后就会有一个云备份,再点进去有个立即备份。2第二个条件就是手机一定要有充足...

2026-01-09 04:55 liuian

笔记本触摸板没反应怎么办(笔记本电脑触摸板没反应怎么回事)
笔记本触摸板没反应怎么办(笔记本电脑触摸板没反应怎么回事)

您可以尝试按下触摸板上方的Fn键加上触摸板功能键来恢复触摸板反应。如果这个方法不行的话,您可以尝试更换电脑驱动或进行一些基础维护来解决问题。触摸板没有反应可能是因为触摸板驱动或者硬件出现问题,还有可能是触摸板出现灰尘卡住,需要进行清理维护。...

2026-01-09 04:05 liuian