Javascript

JavaScriptでAsync-Await-Catch

ちょっと予習。 async function sleep(wait, result) { return new Promise((resolve, reject) => { setTimeout(() => { if (result === 3) { reject('error!') } else { console.log(result) resolve() } }, wait) }) } async function syncSleep() { await…

表データからツリー構造への変換(深さ優先探索)

できた。 深さ優先探索を使っています。 まずルートとなる要素を確定し、その要素に子要素を追加し、その子要素の子要素を…を繰り返しています。 昨日やってたのは、終端要素から親となる要素を追加していくという方法でしたが、 うまいこといかんかったので…

表データからツリー構造への変換

末尾の表データをツリー構造に変換したく色々トライしていますがうまくいかぬorz 枝の深さの数がそれぞれ違うので途中でおかしくなって破綻するパターン。 週末は普通に休みだし、いい頭の体操になるかなー。 Id parentID 1 2 1 3 1 4 1 5 1 6 2 7 6 8 6 9 6…

ES2015でPrototype

色々残念だ。心より恥じるしかない。 class Product { use(str) {} createClone() {} } class Manager { constructor() { this.showcase = new Map() } register(name, product) { this.showcase.set(name, product) } create(name) { const product = this.…

ES2015でSingleton

イマイチ感がすごすぎる…。 class Singleton { constructor() {} echo() { console.log('hello') } static getInstance() { if (Singleton.instance === null) { Singleton.instance = new Singleton() } return Singleton.instance } } Singleton.instance …

ES2015でFactory Method

シリーズ化してきましたね。 Factory Methodはこんな感じですね。 /** * 製品を表す抽象クラスもどき。 * 具体的な処理はサブクラスで定義する。 */ class Product { use() {} } /** * 工場を表す抽象クラスもどき。 * 具体的な処理はサブクラスで定義する。…

ES2015でAdapterもどき

こんな感じでしょうか。 /** * 既にあるクラス */ class Banner { constructor(message) { this.message = message } showWithParen() { console.log(`( ${this.message} )`) } showWithAster() { console.log(`* ${this.message} *`) } } /** * 文字を表示…

ES2015でIteratorもどき

IteratorをES2015で書くならこんな感じかなと。 /** * 集合体を表すインタフェースもどき */ class Aggregate { iterator() {} } /** * 要素を順次スキャンするための操作を定義するインタフェースもどき */ class Iterator { hasNext() {} next() {} } /** …

ES2015でTemplateMethodもどき

ES2015はclassベースの構文が導入されています。 これを上手いこと使えばTemplateMethodっぽいことが出来るかなーと思って試してみました。 class AbstractDisplay { open() { throw new Error('a subclass have to override this open method.') } print() …