promise和async的作用和区别 |
您所在的位置:网站首页 › spot的用法与搭配 › promise和async的作用和区别 |
promise和async的作用和区别
今天遇到了一个对我来说比较抽象的问题promise和async 在使用的时候虽会使用,但是对它们两的概念还是有些模糊滴😟 promisepromise不能返回表达式的箭头函数中设置的断点,如果在.then中设置断点,使用Step Over快捷键,调试器是不会跳到下一个.then中的,因为promise只会跳过异步代码 asyncasync要搭配着await使用,它们能够使得代码调试更简单 使用它们两时,不再需要那么多箭头函数,这样就可以像调试同步代码一样跳过await语句。 注意以下几点: 若它等到的不是一个promise对象,那么await表达式的运算结果就是它要等的结果。若他等到的是一个promise对象,这个时候就要注意了,await就会忙起来了,它会阻止后面代码的执行,等着promise对象resolve,然后得到resolve的值,最后作为await表达式的运算结果两者区别 async/await代码看起来相对比较简洁一些,使得异步代码看起来像同步代码async/await和promise一样,是非阻塞的async/await是基于promise来实现的,可以说是改良过的promise,它不能用于普通的回调函数下面看一些案例来了解一下 (以下代码执行的顺序和原因) async function async1 () { console.log('async1 start') - 2.async1 start await async2(); console.log('async1 end') - 6.async1 end } // 异步 async function async2 () { console.log('async2') - 3.async2 } // 异步 console.log('script start') - 1.script start setTimeout(function () { console.log('setTimeout') - 8.setTimeout }, 0) async1(); new Promise (function (resolve) { console.log('promise1') - 4.promise1 resolve(); }).then (function () { console.log('promise2') - 7.promise2 }) console.log('script end') - 5.script end原因: 先执行同步代码,前面都是定义函数到console.log(‘script start’) 开始执行,setTimeout(function ()是异步,放到库中同步代码执行到async1();先执行console.log(‘async1 start’)async1()继续执行await async2();console.log(‘async2’),但是await后面要跟着promise所以继续往下执行,执行console.log(‘promise1’) ,then()是异步代码放到库中代码继续往下执行,同步代码执行到console.log(‘script end’)结束异步代码,先执行微任务,所以先执行console.log(‘async1 end’)然后再执行then()函数 console.log(‘promise2’)最后执行异步代码定时器,console.log(‘setTimeout’)以上就是目前所了解的内容啦~各位路过的大神有其它的高见麻烦教一下噢╰(°▽°)╯(还是不太懂这个ಥ_ಥ) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |