你可以在 paperjs 中使用 await 吗?

Can you use await in paperjs?

很简单的问题,我可以在 paperjs 中使用像 await 这样的函数吗? 我可以将很多 .then 链接在一起并且一切正常,但是只要我在它前面添加 await 我就会收到错误

SyntaxError: Unexpected token (4:22)

请告诉我他们没有成功,所以我必须开始将所有内容包装在非常长的链中,以便将 fetch 等功能集成到 paperjs 中。在我的代码下方:

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

您正在将代码编写为 PaperScript,这意味着 Paper.js 使用 JavaScript 解析器来解析它并对其应用一些转换。 问题是默认情况下,Paper.js 使用的 JavaScript 解析器不支持 ES6 特性。

您必须先加载更新版本的解析器 (Acorn),然后才能加载 Paper.js 以解决您的问题。
有关详细信息,请参阅我对模拟问题的回答 here

<!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>