Можно ли использовать await на бумаге js? - PullRequest
0 голосов
/ 22 февраля 2020

Очень простой вопрос, можно ли использовать такие функции, как await внутри бумаги js? Я могу связать воедино множество .then, и все идет хорошо, но как только я добавляю await перед ним, я получаю ошибку

SyntaxError: Неожиданный токен (4: 22)

Пожалуйста, скажите мне, что они не сделали это, поэтому мне нужно начать оборачивать все в безумно длинные цепочки, чтобы интегрировать такие функции, как fetch, в бумагу js. Ниже мой код:

<script type="text/paperscript" canvas="myCanvas">

      getCollectionList = async function() {
           var collectionlist = [];
           collectionlist = await fetch('/api/graph/<%= database %>');
                console.log(collectionlist);
           }

           getCollectionList();

</script>
<canvas id="myCanvas" resize></canvas>

1 Ответ

1 голос
/ 27 февраля 2020

Вы пишете свой код как PaperScript, что означает, что Paper.j s использует синтаксический анализатор JavaScript для его анализа и применения к нему некоторых преобразований. Проблема в том, что по умолчанию синтаксический анализатор JavaScript, используемый Paper.js, не поддерживает функции ES6.

Перед загрузкой необходимо загрузить более свежую версию синтаксического анализатора (Acorn) Paper.js для решения вашей проблемы.
См. Мой ответ на аналогичную проблему здесь для получения более подробной информации.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Debug</title>
    <!-- Load latest acron version first -->
    <script type="text/javascript" src="https://unpkg.com/acorn"></script>
    <!-- Then load Paper.js -->
    <script type="text/javascript" src="https://unpkg.com/paper"></script>
    <style>
      html,
      body {
          margin: 0;
          overflow: hidden;
          height: 100%;
      }

      canvas {
          width: 100%;
          height: 100%;
      }
    </style>
</head>
<body>
<canvas id="canvas" resize></canvas>
<script type="text/paperscript" canvas="canvas">
// Here you can now use ES6 syntax.
const myAsyncFunction = async function() {
    const response = await fetch('https://yesno.wtf/api/');
    const json = await response.json();
    console.log(json);
};

myAsyncFunction();
</script>
</body>
</html>
...