javascript - 异步命令未运行
问题描述
不知道为什么我在这里没有得到 console.log
const inMemoryDb = newDb();
// eslint-disable-next-line no-return-await
const backup = (async () => await migrate())();
async function migrate() {
console.log('entering migrate');
await inMemoryDb.public.migrate();
console.log('migrate called');
const skills = inMemoryDb.public.many("select * from skills where name = 'Swift'");
console.log('skills', skills);
const backup = inMemoryDb.backup();
return backup;
}
export { inMemoryDb, backup };
当我使用这个单例时,我得到一个console.log,console.log('entering migrate');
但不是第二个或第三个console.log
解决方案
如果没有它的代码,我只是在猜测,但正如 Bergi 正确指出的那样,如果执行停止在inMemoryDb.public.migrate
,它可能不会解决或拒绝 Promise。这是一个猜测,它可能是什么样子:
function newDb() {
return {
public: {
migrate: () => {
return new Promise((resolve, reject) => {
// does migration stuff
});
},
},
};
}
以及如何解决它:
function newDb() {
return {
public: {
migrate: () => {
return new Promise((resolve, reject) => {
try {
// does migration stuff
resolve(); // <-- important!
}
catch (error) {
reject(); // <-- important!
}
});
},
},
};
}
推荐阅读
- .net - .Net 框架配置文件
- scala - 从 scala 库中获取相对路径(在开发该库时)
- python - 如何将keras中的参数设置为不可训练?
- python - Python 文本文档的相似性(无库)
- php - 将 url 的最后一部分保存在变量中
- python - Scrapy / 从 start_requests 函数获取数据以解析函数
- javascript - 无法在 Google Charts 表格代码中添加额外的行或列..(表格消失)
- android - 从 Firestore 数据库更新时 ArrayList 的顺序发生变化
- db2 - IBM Lift CLI 无法连接到源数据库
- python-3.x - 计算采摘资源的最佳路线