問題タブ [event-dispatching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
400 参照

php - Event Dispatcher は適切なソリューションですか?

私は、応答がクライアントに返された後 (または実装によっては前) に電子メールを送信し、統計を保存する必要がある API プロジェクトに取り組んでいます。どちらの場合も、Symfony の EventDispatcher コンポーネント (フレームワークとして Symfony を使用していません) を検討しているため、各コントローラー アクションはイベントをディスパッチして、電子メールをキューに追加したり、統計データベース テーブルにデータを挿入したりします。

そのため、物事は次のようになります

この内部アクションを可能な限り非同期にしたいので、これを検討しています。この場合、これは適切な解決策ですか?

編集: Jovan Perovicが提案したように、さらに情報を追加しています。APIは、ユーザーがWebまたはモバイルアプリを介して通信するREST APIであり、APIのパフォーマンスを犠牲にすることなく、ログに記録し、統計を保存し、通知(主に電子メール)を送信したい.最初のアイデアは、戻った後に実行されるものを使用することでした.クライアントへの応答ですが、EventDispatcher を使用してそれが可能かどうかはわかりません。統計や通知を処理するためにキューを使用する場合でも、ログを書き込んで統計を保存するために、すべてのコントローラーが情報を送信できる集中化された場所が必要です。

私の目標がより明確になったことを願っています。ごめん。

0 投票する
2 に答える
3660 参照

php - Symfony - イベントがディスパッチされていない

カスタム イベント ディスパッチャーとサブスクライバーの作成に取り組むのはこれが初めてなので、頭を包み込もうとしていますが、カスタム イベントがディスパッチされない理由がわかりません。

私はドキュメントに従っています。私の場合、誰かがサイトに登録したらすぐにイベントをディスパッチする必要があります。

だから私の中で私registerAction()はこのようなイベントをディスパッチしようとしています

これは私のRegistrationEventクラスです

これは私のRegistrationSubscriberクラスです

これを行った後、登録プロセスが関数で停止することを望んでいましたonRegistrationが、そうはなりませんでした。次に、プロファイラーの [イベント] タブを確認しましたが、イベントがリストされていません。

ここで何が欠けていますか?正しい方向へのプッシュは本当に高く評価されます。

更新: カスタム イベントのサービスを登録する必要があると考えたので、内部に次のコードを追加しました。services.yml

プロファイラーの [イベント] タブ内に、カスタム イベントが一覧表示されていますが、それでもディスパッチされません。

0 投票する
1 に答える
1853 参照

javascript - Chrome は SVG 要素のクリック イベントを発生しません (Firefox は発生します)

さまざまなブラウザー (Chrome、Edge、Firefox) 間でのクリックイベントの処理に矛盾やバグが見られます。

SVG を使用する JavaScript ライブラリで、クリックおよびドラッグ可能な四角形を作成します。Chrome ブラウザーでスニペットを実行すると、キャンバスに 2 つ以上の要素が存在する場合、クリックイベントが発生しません。

これを確認するには、キャンバス上に少なくとも 2 つの長方形を作成する必要があります。マウスでドラッグできます(長方形の初期位置は同じです)。通常、要素でクリックイベントが発生した場合、四角形の境界線は茶色になります。

奇妙なことに、Firefox は期待どおりにクリックイベントを発生させますが、Chrome はイベントをまったく発生させません。MS Edge ブラウザーは、ダブルクリックでクリックイベントを発生させます。

PS: コードはここに完全な容量で示されているため、例を実行できます。

0 投票する
0 に答える
379 参照

laravel-5.3 - Laravel Eloquentモデルイベントが突然呼び出されない

私の Laravel 5.3 アプリケーションでは、いくつかの Eloquent モデル イベント (主にcreating) を使用しています。1 週間前までは正常に動作していましたが、今日になって突然、いずれも発砲していないように見えることに気付きました。

フレームワークを介してデバッグすると、実際にはすべてが Dispatcher::listeners 配列に追加されていることが示されますが、ステップスルーして実際に実行するコードが見つかりません。イベント コールバックにコマンドを配置die()しても何も実行されず、それらが実際に起動していないことが示唆されます。

以下にそれらの 1 つの例を示します (これは特性に関するものですが、特性と直接モデルを組み合わせて使用​​しています)。

public static function bootUuidModel() { // On create, generate and assign a UUID static::creating(function (Model $model) { $model->setAttribute(self::getUuidFieldKey(), Uuid::uuid4()->toString()); }); }

なぜこれらが突然実行されなくなったのか、誰にも考えがありますか? さまざまな目的でさまざまなモデルで使用していますが、どれも実行されていないようです。最近、このフレームワークを使用している他の誰かがこれらの問題を経験しましたか?

前もって感謝します

- アップデート -

さて、さらに調査した結果、Laravel の DatabaseServiceProvider が起動する前に User オブジェクトが何らかの理由で起動していることが問題であることがわかりました。DatabaseServiceProvider::boot() は、何らかの理由で、イベント ディスパッチャがモデルに静的に割り当てられている場所です。したがって、ディスパッチャーがまだ存在しないため、User オブジェクトでの起動はイベントをディスパッチャーに登録していません。私は User オブジェクトを自分で起動していません.Laravelがこれを行う理由を知っている人はいますか?