如何解决语法错误:等待仅在异步函数中有效? [英] How to resolve the Syntax error : await is only valid in async function?

查看:26
本文介绍了如何解决语法错误:等待仅在异步函数中有效?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经编写了使用Promise从异步调用返回一些数据的代码。当我尝试执行时,我得到"语法错误等待仅在异步函数中有效",并且我还得到不能代理应用程序请求.错误:CONNECT ECONNREFUSED。

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

我在函数调用之前尝试使用异步,但不起作用

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);

我希望变量Body具有从httpGet函数返回的数据。现在我收到了上面提到的错误。但是如果不使用AWAIT,我会得到Body的值为‘{}’。

请帮助

推荐答案

await只能在标记为async的函数中调用。 因此,您可以创建async IIFE并从那里调用httpGet

(async function(){
    var body = await httpGet('link');
    $.response.setBody(body);
})()
基本上,当您使用一个asynchronous操作时,您还需要使整个流程异步。因此async类关键字使用ES6生成器函数并使其返回承诺。

如果您有念力,可以结账this

这篇关于如何解决语法错误:等待仅在异步函数中有效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆