async 同步执行问题
我在用electron 我打算创建一个sqlite文件后 执行数据库迁移,然后export db
但是我写了 一个类似下面这样的同步方法 打印结果 1,3,5,4,2
(async ()=>{
console.log('------1------')
setTimeout(()=>{
console.log('------2------------')
},5000)
console.log('--------3-----------')
await test(); //数据库迁移
console.log('------4------')
})();
console.log('------5------')
我在想无论我写的同步是否执行都应该打印 1,3,4,5,2.
为什么我同步执行的 会阻塞4 而不会阻塞5呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
先试着把async/await转换成Promise
自执行函数是async的,4和5不在一个阶段
async 函数中 在await前是同步的
也就是 1,3,5 都是同步 2(因为setTimeout)、4 是异步的
同步执行 指的是 async内部的 await与await 之后的代码关系。 不是指async函数 与其他函数的关系。async 执行碰到 await 然后执行了await语句 会返回一个未完成的promise。
async函数执行需要加上
await
关键字才会阻塞下面的程序,就像test执行那样