如何解决语法错误:await 仅在异步函数中有效?

Aru*_*van 3 javascript asynchronous node.js

我已经编写了一个代码来使用 promise 从异步调用中返回一些数据。当我尝试执行时,我得到“语法错误等待仅在异步函数中有效”,并且我得到无法代理应用程序请求...错误:连接 ECONNREFUSED。

我不确定为什么会出现这些错误

我曾尝试在函数调用之前使用 async,但没有奏效

var http = require('https');
var httpGet = function(url) {
  return new Promise (function(resolve, reject) {
    http.get(url,function(res) {
      res.setEncoding('utf8');
      var body = ''; 
      res.on('data', function(chunk){ 
        body += chunk;
        console.log("The body is "+ body);
      });
      res.on('end',function(){resolve(body);});
    }).on('error', reject);
  });
};

var body = await httpGet('link');
$.response.setBody(body);
Run Code Online (Sandbox Code Playgroud)

我希望变量体具有从 httpGet 函数返回的数据。现在我收到了上述错误。但是不使用 await,我将 body 的值设为“{}”。

请帮忙

Ari*_*rty 13

await只能在标记为 的函数中调用async。所以,你可以从那里async IIFE拨打电话httpGet

(async function(){
    var body = await httpGet('link');
    $.response.setBody(body);
})()
Run Code Online (Sandbox Code Playgroud)

基本上,当您使用一个asynchronous操作时,您还需要使整个流程异步。所以async关键字 kindof 使用 ES6 生成器函数并使其返回一个承诺。

您可以检查这个,如果你有困惑了。