0

await外部の javascript ライブラリを使用して、ブラウザで javascript 演算子を使用するにはどうすればよいですか?

たとえば、次の html コードがあるとします。

<!DOCTYPE html>
<html>
    <head>
        <script type='text/javascript' src='awesome.lib.js'></script>
        <script type='text/javascript'>
            async function slow() {
                return new Promise(function(resolve, reject) {
                  setTimeout(function() {
                      console.log("slow finished");
                      resolve();
                  }, 3000);
                });
            }

            function fast() {
                console.log("fast");
            }

            async function run() {
                await slow();
                fast();
            }

            run();
        </script>
    </head>
    <body>
    </body>
</html>

awesome.lib.jsawait オペレーターをブラウザーにもたらすために、どのライブラリーを使用できますか (これらのライブラリーはどこにありますか?) 実際の例をどのようにコーディングできますか?

コードをトランスパイルできることはわかっていますが、サードパーティのライブラリを追加するだけでうまくいくという賢い解決策を探しています。

Google Traceur Transpiler を使用している場合、コードをトランスパイルして ( http://jsfiddle.net/msfrisbie/yk6r7gxr/ )、以下のようなコードを取得できます。しかし問題は、最初にコードをトランスパイルする必要があることです。もう 1 つのことは、javascript のようなものを使用することを避けたいということです<script type='text/whatevernotjavascript'>...code...code</script>。どうすればこれを行うことができますか?これは非常に素晴らしく、実用的で救世主です。

<script type="text/javscript">
    $traceurRuntime.ModuleStore.getAnonymousModule(function(require) {
      "use strict";
      var $__1 = $traceurRuntime.initTailRecursiveFunction(slow),
          $__3 = $traceurRuntime.initTailRecursiveFunction(run);
      function slow() {
        return $traceurRuntime.call(function() {
          return $traceurRuntime.continuation($traceurRuntime.asyncWrap, $traceurRuntime, [$traceurRuntime.initTailRecursiveFunction(function($ctx) {
            return $traceurRuntime.call(function($ctx) {
              while (true)
                switch ($ctx.state) {
                  case 0:
                    $ctx.returnValue = new Promise(function(resolve, reject) {
                      setTimeout(function() {
                        console.log("slow finished");
                        resolve();
                      }, 3000);
                    });
                    $ctx.state = 2;
                    break;
                  case 2:
                    $ctx.state = -2;
                    break;
                  default:
                    return $traceurRuntime.continuation($ctx.end, $ctx, []);
                }
            }, this, arguments);
          }), this]);
        }, this, arguments);
      }
      function fast() {
        console.log("fast");
      }
      function run() {
        return $traceurRuntime.call(function() {
          return $traceurRuntime.continuation($traceurRuntime.asyncWrap, $traceurRuntime, [$traceurRuntime.initTailRecursiveFunction(function($ctx) {
            return $traceurRuntime.call(function($ctx) {
              while (true)
                switch ($ctx.state) {
                  case 0:
                    Promise.resolve(slow()).then($ctx.createCallback(2), $ctx.errback);
                    return;
                  case 2:
                    fast();
                    $ctx.state = -2;
                    break;
                  default:
                    return $traceurRuntime.continuation($ctx.end, $ctx, []);
                }
            }, this, arguments);
          }), this]);
        }, this, arguments);
      }
      run();
      return {};
    });
    //# sourceURL=traceured.js

4

0 に答える 0