【发布时间】:2020-03-13 18:59:57
【问题描述】:
我在控制器中有一个异步函数,它应该等待另一个服务函数返回值,但它没有等待它。如果只有一个(或最好的)解决此问题的方法是返回新的 Promise,尽管只是价值? 控制器代码
exports.trip = async (req, res, next) => {
try {
let result = await osrmService.trip(req.body.options);
console.log(result) //result is undefined
res.status(200).json({
route: result
});
} catch (error) {
next(error)
}
osrmService 代码:(不等待值)
exports.trip = async (options) => {
osrm.trip(options, await function(err, result) {
if (err) throw err;
//console.log(result)
return result;
});
我以这种方式完成了它并且它工作正常:
exports.trip = (options) => {
return new Promise((resolve, reject) => {
osrm.trip(options, function (err, result) {
if (err) reject(err);
resolve(result)
});
});
这是最佳方式吗?
【问题讨论】:
标签: node.js api asynchronous async-await