如何从节点'request'模块中获取数据



我正在使用请求模块在 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);
  }
};

最新更新