node.js - 通过函数结果设置对象键值
问题描述
无法将探测函数结果分配给newItem对象中的w键。
有什么建议么?
router.post('/', (req, res) => {
const newItem = new Item({
src: req.body.src,
w: probe(req.body.src, function (err, result) {
return result.width
// console.log(result.width)
})
});
解决方案
probe
似乎是异步的,因此该代码将不起作用。推荐的方法是使用Promise
& async/await
。没有看到probe
定义我不能给你一个实现,但是如果你不知道如何将它转换为一个Promise
公正的使用util.promisify
const { promisify } = require('util')
const probe = promisify(require('./probe')) // or whatever module
router.post('/', async(req, res) => {
try {
const { witdth } = await probe(req.body.src);
const newItem = new Item({
src: req.body.src,
w: witdth
});
} catch(e) {
// Handle error
res
.status(500)
.send('error')
}
})
推荐阅读
- python - input() 函数的存在会导致多处理失败。这背后的原因是什么?
- rust - 如何处理来自 Result 的 Rust 错误作为返回值,而不是在 JavaScript 中抛出异常?
- mysql - 使用 COUNT 和 WHERE IN 获取具有多个值的行数
- javascript - 此代码是否需要这些返回?他的变量不会改变?
- java - 如何在 Android 项目中包含 Java 库
- python - 使用具有相同类名的 Selenium 问题进行 Web 抓取
- python-3.x - 如何获取用户输入并将其放入python数组中的新数组中?
- pointers - 如何在参数化派生类型中创建 Fortran 类型绑定过程?
- python - Pandas 数据框:为匹配正则表达式的列/行分配特定值
- swift - 布尔谓词导致零行数