来自 C++ 和 Python,我仍然为 Javascript 异步无处不在而苦苦挣扎。有时它非常有用,但有时我只是不知道如何在不编写糟糕代码的情况下适应它。
我有一个 Node.js + Express CRUD 设置,在继续请求之前我必须做一些基本检查。我想在运行最终查询之前检查 http POST 字段是否与数据库字段匹配。我不能将它声明为异步函数并使用 await,因为它必须匹配给定的接口(interface)。
showColumns(dbTable)
返回带有 SHOW COLUMNS 查询的数据库前提。
我找到的唯一解决方案是:
database.showColumns(dbTable).then((columns)=>{
//But do I really need to put all my logic inside a then???
let row = Object.keys(req.body).filter({}.hasOwnProperty.bind(columns));
//... all the rest of the logic goes here
});
在您看来,解决该问题的最干净/最优雅的方法是什么?
最佳答案
database.showColumns(dbTable)
.then(columns => this.handleColumns(columns))
.then(parsedData => this.doSthElse(parsedData);
您可以将逻辑提取到单独的方法中。但是,它必须在 then 内部调用,因为它是异步操作完成后触发的回调。
或者,您可以考虑使用生成器、异步/等待函数或 promise 。
关于javascript - 在 Javascript 中使用异步结果的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51726390/