javascript - 异步等待实用程序功能同步?
问题描述
如果我们这样定义一个效用函数:
/**
* Delete the entire database
*/
export async function deleteDatabase(db) {
await db.delete()
}
我们称之为。
deleteDatabase(db)
nextFunction()
db.delete()
那么在完成正确之前不会调用下一个函数吗?
我认为这就是它的工作原理,所以我只想确认语义。
DexieJS 演示
对于那些对实际用例感兴趣的人,将答案合并到这个 DexieJS 演示中:
解决方案
“那么在完成之前不会调用下一个函数对db.delete()
吗?” 错误的。它将在异步操作完成之前调用。
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
async function deleteDatabase() {
console.log('Deleting DB')
await delay(1000)
console.log('DB deleted')
}
function nextFunction() {
console.log('Next function')
}
deleteDatabase()
nextFunction()
您需要有另一个async/await
包装函数或用于.then
链接承诺
deleteDatabase().then(nextFunction)
推荐阅读
- swift - 调整 UIView 内按钮的不透明度,不透明度为 0.5
- linux - 如何保留 QEMU VM 映像中的更改?
- c++ - 在我的情况下,如何删除代码重复 const_iterator 和迭代器?
- c++ - 关于将现有图转换为 BGL
- javascript - 如何使用循环重新排列数组
- flutter - setstate 与 Flutter 中的 provider 等其他状态管理的基本区别
- aws-codepipeline - 由于权限错误,无法在 AWS CodePipeline 中完成部署阶段
- ssl - Heroku 免费计划是否支持 SSL 加密?
- python - 如何比较两个Excel文件中的不同值
- android - 如何在 Android 中插入/更新 SQLite 数据库?