如果不是 promise , await会阻塞后面的代码,先执行async外面的同步代码,同步代码执行完,再回到async内部,把这个非promise的东西,作为 await表达式的结果 如果它等到的是一个 promise 对象,await 也会暂停async后面的代码,先执行async外面的同步代码,等着 Promise 对象 fulfilled,然后把 resolve 的参数作为 await 表达式...
1.遇见await左侧先执行,右侧时候要跳出函数,等外部任务执行完再跳回 2.awati可以看成.then是一个微任务,放入微任务队列,和其他微任务一样,顺序执行 3.执行微任务时,产生微任务顺序放入当前微任务队列,顺序执行 4.遇见函数前面有async,awiat返回时,放入到Promise.then微任务队列中,然后执行微任务队列,如果前面没有async,a...
*await执行完后,会让出线程。async标记的函数会返回一个Promise对象 难点 最令人困惑的,就是async1 end在promise2之后输出 在函数async1中,执行promise(由于async2是async标记的函数,所以默认返回promise对象)会发现resolve(),然后放入回调队列。 接着执行下方的new Promise中的resolve()输出promise2,再回来输出async1...
async/await的执行顺序也依赖于Promise。async函数内部的代码会同步执行,直到遇到await关键字。在await关键字处,async函数的执行会暂停,并等待Promise的解决。一旦Promise解决,async函数的执行会恢复,并继续执行后面的代码。由于async/await的执行是基于Promise的,因此它们通常会被放入微任务队列中,与Promise的回调函数一起执...
1、默认的理论基础 执行上下文(Execution context) 函数调用栈(call stack) 队列数据结构(queue) Promise async/await ...
结果输出 script start async1 start async2 promise1 scriptendpromise2 async1endsetTimeout 参考8张图让你一步步看清 async/await 和 promise 的执行顺序
F12打开浏览器控制台复制代码 运行 查看运行顺序 例1: async function async1() { console.log('start') await async2() console.log('end') } async function async2() { console.log('async2 start') console.log('async2 end') } async1() ...
这道题最难理解的地方5和6的执行顺序,前面1~4的结果一般没有异议,如果不明白,百度一下变可以理解。 5的结果是promise的then方法里输出的,6打印的第一个await的返回结果。 下面先说一下async的await: async 函数中可能会有 await 表达式,这会使 async 函数暂停执行,将await的结果封装成一个Promise,并等待解析完...
function doA1(){ new Promise( function (resolve) { console.log(11); resolve(); }).then(o=>{ console.log(12); }).then(o=>{ console.log(13); }).then(o=>{ console.log(14); }) } await doA1(); console.log(2); //执行结果顺序为 11 12 2 13 14 function doA1(){ return...
1、一节课彻底弄懂promise、async、await(一),主要是同步与异步、消息队列、事件轮询 2、一节课彻底弄懂promise、async、await(二),主要是异步编程、回调函数、promise 3、一节课彻底弄懂promise、async、await(三),主要是Generator 函数、async、await 刚接触js的时候,对于es6的promise、async、await简直怕的要死,甚...