Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Async/Await编写基于承诺的HTTP请求_Javascript_Node.js - Fatal编程技术网

Javascript 使用Async/Await编写基于承诺的HTTP请求

Javascript 使用Async/Await编写基于承诺的HTTP请求,javascript,node.js,Javascript,Node.js,是否可以将节点手册中的以下HTTP请求示例重写为使用Async/Await而不是Promissions?我熟悉带有resolve/reject的returnnewpromise方法,但更愿意使用async/await const postData = querystring.stringify({ 'msg': 'Hello World!' }); const options = { hostname: 'www.google.com',

是否可以将节点手册中的以下HTTP请求示例重写为使用Async/Await而不是Promissions?我熟悉带有resolve/reject的returnnewpromise方法,但更愿意使用async/await

    const postData = querystring.stringify({
      'msg': 'Hello World!'
    });

    const options = {
      hostname: 'www.google.com',
      port: 80,
      path: '/upload',
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': Buffer.byteLength(postData)
      }
    };

    const req = http.request(options, (res) => {
      console.log(`STATUS: ${res.statusCode}`);
      console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
      res.setEncoding('utf8');
      res.on('data', (chunk) => {
        console.log(`BODY: ${chunk}`);
      });
      res.on('end', () => {
        console.log('No more data in response.');
      });
    });

    req.on('error', (e) => {
      console.error(`problem with request: ${e.message}`);
    });

    // write data to request body
    req.write(postData);
    req.end();

您发布的代码不使用承诺(
req
是一个事件发射器,更具体地说是一个实例),因此您不能在此处使用
async
/
wait
语法

我熟悉带有resolve/reject的
returnnewpromise
方法,但更愿意使用async/await


不,您不能使用
async
/
await
而不是反正使用。您可以将其用作
然后
调用的语法糖。

您不能使用
异步
/
等待
而不是承诺。您只能使用带有
async
/
await
语法的承诺。如果它是承诺,请确保您可以使用
async/await
重写它,谢谢您的清晰说明。干杯