私は、私の脳が非同期/完全にはっきりしていないことを知っています。私はいくつかの行に使用され、非同期とマークされた関数内の他のものではなく、多くの例を参照しています。関数内ですべてを実行するには、各行を待つ必要がありますか?
myFunction() async {
await functionA();
await print("This really long thing that's going to print out.");
await functionB();
await MyExtraClass.lookupSomethingQuickly();
...
}
、私はそれは通常、このようなものだ参照だから、例:
たとえば、私が今まで(私は基本的な/シンプルなものの一例として、print文を使用しています)このような例を見てきましたまれている場合myFunction() async {
await functionA();
print("This really long thing that's going to print out.");
await functionB();
MyExtraClass.lookupSomethingQuickly();
...
}
簡単なことが理論的に順番に場合や、完了することをちょうど仮定があります場合、私は疑問に思ってだから、各行の前でのawaitを置くことは、私は絶対に行を追跡するためにライン1を必要とする場合にやるべきものです2を3行目などに従ってください... functionB()が消える前にそのプリントが絶対に必要な場合はどうしたらいいですか?
私は、async/awaitで関数を書くたびに、すべての行を判断する必要があります。良いタイミングと運のためにコードが動作しているかどうか、あるいは実行をオフにします。
も参照してください。これは私が少し良く理解するのを助け、おそらくこれまで私が読んだ最良の説明です。私はあなたが「電話が未来を返さなければ、待つことは何もない」と言ったときにフォローアップしたかったのです。 他の機能の中で私自身の機能を使用するとき、私はこれに問題があると思います。私の機能の1つが完了するまでに時間がかかる(すなわち、1000人のテニス選手をランク付けする)とき、私は将来を返すべきでしょうか?私がFutureを返さない場合、この関数を使用するコードは自動的に待ちますか? – Dan
これが質問かどうか分かりません。私はこのように説明します。あなたが仕事をしてくれるように指示し、仕事が終わったときにあなたに連絡し、彼があなたに戻ってくるまで待っているときは、これが「待っている」ものです。あなたが誰かに言うなら、私にこの物に手を差し伸べれば、彼はすぐにあなたに手を差し伸べるでしょう。そして、あなたは何かをやる機会がないので、待っていません。アクションが「ワンステップ」で完了したため、あなたは「待つ」必要はありません。 –
それは助けと私は理解に近いと感じています。私は私が「すぐに」あるものについていると思う。それでは、このシナリオはどうでしょうか?100万の乱数を合計する関数があるとしましょう。これは合計+ = rのような単純な実行であり、合計を返します。そして、私は戻り値r1 + r2 + r3のような3つの乱数の合計を返す別の関数を持っています。どちらの場合も、処理する前に合計が必要です。私の頭脳では、「最初の機能を待つ必要があるのは時間がかかるかもしれないから、待たなければならない。私の考え方が間違っていることを教えてくれませんか? – Dan