我是nodejs的新手。我在示例1中没有看到回复,但是在示例2中看到了。为什么? Await在其他地方使用babel为我工作。

例1

 let res = await request(url)
 console.log(res);
 console.log(res.body);

例2
request(url, function (error, res, body) {
 if (!error && response.statusCode == 200) {
 console.log(body)
 }
});

Await在其他地方也可以使用,我正在使用babel和es6和es7功能所需的模块。例如,经过验证,await在squelize调用中有效。但这不适用于请求调用。为什么?

最佳答案

您只应在返回Promise的内容上使用await。我绝对建议您在开始使用asyncawait之前阅读Promises。您可以通过在request周围创建自己的包装函数以使其返回 promise 来使该示例工作,如下所示:

function doRequest(url) {
  return new Promise(function (resolve, reject) {
    request(url, function (error, res, body) {
      if (!error && res.statusCode == 200) {
        resolve(body);
      } else {
        reject(error);
      }
    });
  });
}

// Usage:

async function main() {
  let res = await doRequest(url);
  console.log(res);
}

main();

编辑:或者,您可以研究使用a promise-based request library而不是常规请求模块。

10-06 14:40
查看更多