ただオブジェクトにイベント処理のためのmixinを追加するだけのライブラリ。
、、なんだけど結局実際のプロダクトで一番使ってる気がした(もしかしたら同じようなのいっぱいあるんかもしれないけど)
今のフロントで意識しないといけん事多すぎるので、非同期処理のマネージャはできるだけ自分の理解の範疇においておきたかったってのがある。
ここに全量は書かないけど
on
off
one
has
emit
的ないっぱん的なメソッドに加えて
has
hasAndOn
hasAndOne
的な「もし1度でもイベントトリガされてたら」的なものも準備した。
(ただhas系の場合はやたらオブジェクトがメモリに保持されるのを防ぐためemit時に渡されたデータはリスナ側には現状渡してない)
import EventManager from 'dd-event-manager';
class Hoge() {
constructor() {
new EventManager(this);
}
async init() {
// 「何かとっても大事な非同期」処理
this.大事な変数 = await someAsyncFunction();
this.emit('init');
}
ready() {
return new Promise(resolve => {
this.hasAndOne('init').then(resolve);
});
}
}
window.hoge = new Hoge();
hoge.init();
async function someOtherFunction() {
await window.hoge.ready();
// 「何かとっても大事な非同期」の後でやりたい事
console.log('${window.hoge.大事な変数}');
}