Как устранить синтаксическую ошибку: await действует только в асинхронной функции? - PullRequest
0 голосов
/ 20 июня 2019

Я написал код для возврата некоторых данных из асинхронного вызова с использованием обещания.В то время как я пытаюсь выполнить, я получаю «Синтаксическая ошибка, ожидающая, действительна только в асинхронной функции», а также я получаю Невозможные запросы приложения прокси ... Ошибка: подключение 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);

Я хотел бы переменнуютело, чтобы получить данные, возвращаемые функцией httpGet.Прямо сейчас я получаю вышеупомянутые ошибки.Но без использования await, я получаю значение body как '{}'.

Пожалуйста, помогите

1 Ответ

4 голосов
/ 20 июня 2019

await можно вызывать только в функции, помеченной как async.Таким образом, вы можете сделать async IIFE и вызвать httpGet оттуда.

(async function(){
    var body = await httpGet('link');
    $.response.setBody(body);
})()

В основном, когда вы используете одну операцию asynchronous, вам необходимо также сделать весь поток асинхронным.Таким образом, ключевое слово async kindof использует функцию генератора ES6 и заставляет его возвращать обещание.

Вы можете проверить этот , если у вас есть путаница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...