
async awaitのサンプル例~webpack使用~
WEB
今までJavascriptのasync / awaitの使い方が不明瞭だったので勉強を兼ねてサンプルを作りました。
今回はオブジェクトが右側に移動し、その後文字が書き換わるように設定しました。
サンプルHTML
1 2 3 |
<div style="overflow: hidden"> <div class="object">tset</div> </div> |
サンプルJS
動作させるオブジェクトを指定
1 |
var object = document.querySelector('.object') |
指定オブジェクトを移動させる関数
1 2 3 4 5 6 7 8 9 |
function move() { return new Promise((resolve, reject) => { var player = object.animate([ {transform: 'translate(0)'}, {transform: 'translate(90vw, 0)'} ], 1500); resolve(player) }) } |
指定したオブジェクトの終了時の場所を指定する関数
1 2 3 4 5 6 7 8 |
function finish() { return new Promise((resolve, reject) => { var moveend = object.style.transform = "translate(90vw, 0)" setTimeout(() => { resolve(moveend) }, 1700) }) } |
指定したオブジェクトの文字を変更する関数
1 2 3 4 5 |
function rename() { return new Promise((resolve, reject) => { resolve(object.innerText='移動が完了') }) } |
3つの関数を順番に実行させるasyncファンクション
1 2 3 4 5 |
async function myfuncA() { await move() await finish() await rename() } |
functionを実行
1 |
myfuncA(); |
発生したエラー
[regeneratorRuntime is not defined]
このエラーが出た場合、下記の方法で対応が可能でした
@babel/polyfillをインストール
1 |
yarn add @babel/polyfill |
webpack.config.jsのentryに書き加える
1 |
entry: ['@babel/polyfill', './js/○○○.js'] |
このentryは、自分のエントリーファイルに合わせて適宜調整してください