牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Javascript で非同期処理を async/await を使わない場合・使った場合のメモ

(あくまでもこんな感じという擬似コードなので動かないです)

async/await を使わない場合

promise.then(() => {
  console.info('ペ');
  asyncFunc1.then(() => {
    console.info('ン');
  }).then(() => {
    console.info('ギ');
    asyncFunc2.then(() => {
    }).then(() => {
      console.info('ン');
      asyncFunc3.then(() => {
      }).then(() => {
        console.info('・');
        asyncFunc4.then(() => {
        });
      });
    });
  });
});

// ペ
// ン
// ギ
// ン
// ・

async/await を使った場合

promise.then(async () => {
  console.info('ハ');
  await asyncFunc1();
  console.info('イ');
  await asyncFunc2();
  console.info('ウ');
  await asyncFunc3();
  console.info('ェ');
  await asyncFunc4();
  console.info('イ');
});

// ハ
// イ
// ウ
// ェ
// イ

Node.js でファイルのパスからファイル名や拡張子を取り出すメモ

(node v8.x)

const path = require('path');
const filePath = 'hoge/fuga/moge.png';

console.info(path.basename(filePath));
console.info(path.dirname(filePath));
const ext = path.extname(filePath);
console.info(ext);
console.info(path.basename(filePath, ext));

//moge.png
//hoge/fuga
//.png
//moge

参考

Javascript で非同期処理の戻り値を実行順で取りたい場合のメモ

処理完了順

function func() {
  const data = [1, 4, 3, 2,];
  for (let i = 0; i < data.length; i += 1) {
     new Promise(resolve => {
      setTimeout(() => {
        resolve(data[i]);
      }, 1000 * data[i]);
    }).then(result => console.info(result));
  }
  console.info('for-end');

  return 'DONE!';
}

func();
// for-end
// "DONE!"
// 1
// 2
// 3
// 4

実行順

async function async_func() {
  const data = [1, 4, 3, 2,];
  for (let i = 0; i < data.length; i += 1) {
    const result = await new Promise(resolve => {
      setTimeout(() => {
        resolve(data[i]);
      }, 1000 * data[i]);
    });
    console.info(result);
  }
  console.info('for-end');

  return 'DONE!';
}

async_func().then((d) => {
  console.info(d);
});
// 1
// 4
// 3
// 2
// for-end
// DONE!

Tone.js で相対音感を鍛えるイヤートレーニングできるようにしてみるメモ

元ネタ

これっぽいことを簡単な実装でやってみる


相対音感を鍛える、究極のイヤートレーニング動画【保存版】

実装テーマ

  • jQuery, React, Vue は使わない。単純なコードで。
  • 動作確認は Chrome for Mac のみ
    • Safari for iPhone では音が鳴らなかった。user interaction じゃないと audio は鳴らないらしい(ソース
  • 履歴残るようにブラウザリロードして同じ音階をランダムに4回づつ鳴らす

ソースコード

デモサイト

参考