つまり、私の Vue コンポーネントには、非同期 created
メソッドと、非同期ウォッチャーを備えたいくつかの変数があります。これらの変数は、一部のコンポーネントの template
セクションの要素によって v-model
として使用されます。ウォッチャーは他のメソッドを呼び出して、これらの変数の値を変更します。
このプロセスは、すべてのデータが初期化され、変数が変更されなくなるまで、一定期間 (数百ミリ秒) 継続します。ここで、すべての変数に初期値が定義されているときに実行する必要があるコードがいくつかあります。しかし、問題は、コンポーネント内のすべてのコードが実行されたことをどうやって確認できるのかということです。
もちろん、created
メソッドの最後でコードを実行できますが、template
セクションの一部の要素が更新されるため、それらは v- として使用されます。 model
変数の場合、これらのウォッチャーは created
メソッドとは独立して実行されますが、created
メソッドはウォッチャーよりもずっと前に完了します。 mounted
メソッドもウォッチャーより前に終了します。したがって、単に created
メソッドの最後にコードを置くことはできません。
それでは、私の質問は、コンポーネントの初期化の最後にコードを実行するにはどうすればよいでしょうか? created
メソッドの後、および変数値の変更に関連するすべてのウォッチャーが完了した後ですか?ウォッチャーの最初の実行について言いたいのですが、これは v-model
の初期化によって引き起こされ、これは script
セクションの要素の初期化によって引き起こされます。コンポーネントのライフサイクルに含まれていない 後でウォッチャーを実行します。したがって、script
セクションの要素の初期化が完了し、v-model
変数に関連付けられたウォッチャーが実行された後で、これを実行する必要があります。
どうすればいいですか?
ブール型フラグの配列を使用して、監視する必要があるものをいくつでも監視できます。これらはすべて、初期値が false の個別の配列として初期化され、各モニターは異なるインデックスを true に設定する必要があります。すべてのモニターの実行が完了すると、すべてのフラグが true になり、この配列 を観察することで、すべてが初期化されたことがわかります。
リーリーVue プレイグラウンドの例