我正在使用请求模块在 NodeJS 中的"快速后路由器"内请求。
我可以很好地在请求中获得"价格"值。
但我想在请求之外使用它,就像控制台.log(价格(所在的位置一样。
但它说价格没有在控制台中定义.log
我怎样才能将其从请求中拉出来以另一种方式使用?
exports.clientOrder = async (req, res, next) => {
try {
const { clientID, riderID, clientOrder } = req.body;
await request(
{
method: 'POST',
uri: 'https://api2....',
body: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
},
async (error, response) => {
if (error) {
return next(error);
}
const price = Math.imul(totalDistance / 1000, 2000);
},
);
// I want to get price value here out of request.
console.log(price)
return res.send('order finished well');
} catch (error) {
return next(error);
}
};
await
仅适用于thenable
,您可以将request
操作包装到承诺中,如下所示:
exports.clientOrder = async (req, res, next) => {
try {
const { clientID, riderID, clientOrder } = req.body;
const price = await new Promise((resolve, reject) => {
request(
{
method: 'POST',
uri: 'https://api2....',
body: data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
},
(error, response) => {
if (error) {
return reject(error);
}
const price = Math.imul(totalDistance / 1000, 2000); // ???
resolve(price);
},
);
});
// I want to get price value here out of request.
console.log(price)
return res.send('order finished well');
} catch (error) {
return next(error);
}
};