問題タブ [dart-async]

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 に答える
46 参照

dart - スローされたエラーを completeError で渡します

mongodb にレコードを挿入するアプリケーションを作成しようとしています。
最初に私のテストを見てください:

パスワードの強度が十分でないため、このテストは失敗するはずです。そして、レコードを挿入しようとするコード。

}

パスワードがセキュリティ要件に従っていないため、この割り当てはエラーをスローします。

この部分はエラーをキャッチして完了する必要があります。

しかし、テストでは NoSuchMethodError が発生しました。ここで、エラー オブジェクトがテストに渡されないのはなぜですか? 私はここで何を間違っていますか?ここに画像の説明を入力

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

dart - 内部関数/ストリームリスナー内から関数値を返す方法は?

ブラウザー側のインデックス付き DB からオブジェクトを削除する関数を dart で作成していたときに、内部関数内から外部関数値を返す必要があることに気付きました。

この関数は、インデックス付き DB への保存と読み込みに使用しているクラスのメソッドです。true削除操作が成功または失敗したときに、この関数がor false、または同じものを含む Future オブジェクトを返すようにします。ただし、ボトルネックはos.delete(_key);ステートメントです。future を返しますが、削除操作の実際の成功または失敗は and によって提供されtx.onCompleteますtx.onError。これらのオブジェクトは両方ともストリームであるため、それらからのイベントを処理する無名関数を作成する必要があります。

ご覧のとおり、無名関数を作成すると、return ステートメントはメソッドを完成させるのではなく、内部関数を完成させます。内部関数に他の関数を呼び出させることもできますが、それらの他の関数には、メソッド全体に結果を返さない独自の return ステートメントがあります。

一時変数を設定して定期的にチェックする方法を試してみましたが、バグの可能性があるだけでなく、シングル スレッドのイベント ループが占有されるため、使用したくない非常に洗練されていないソリューションです。

内部関数から外部関数に値を返すことは可能ですか? または、一連のストリームからのイベントの有無から値を取得するための他のより良い方法はありますか? または、この問題を回避する IndexedDB の別の使用方法はありますか?

0 投票する
5 に答える
5947 参照

dart - Dart で空白の Future を作成するにはどうすればよいですか + 現在進行中の Future を返すにはどうすればよいですか?

さまざまなデータ関連のタスクを実行するサーバー側の Dart クラスを作成しようとしています。これらのタスクはすべて、最初に初期化されたデータベースに依存しています。問題は、データベースの初期化が非同期で行われることです (Future を返します)。私は最初に初期化コードをコンストラクターに入れようとしましたが、実行可能ではないように思われるため、このアプローチをあきらめました。

データにアクセスするメソッド呼び出しの最初のステップとして、DB の初期化を強制する方法を見つけようとしています。つまり、以下の attemptsLogin() が呼び出されたときに、まず DB が初期化されているかどうかを確認し、必要に応じて初期化したいと考えています。

ただし、障害が 2 つあります。データベースが初期化されていない場合、コードは簡単です。データベースを初期化し、返された Future の then() メソッドを使用して残りの関数を実行します。データベースがまだ初期化されていない場合、then() メソッドを何にアタッチすればよいですか?

関連する 2 番目の質問は、データベースが現在初期化されているが、このプロセスがまだ完了していない場合はどうなるかということです。この「進行中」の Future を取得して返すにはどうすればよいですか?

これは、私が取り組もうとしているコードの基本的な要点です。

よろしくお願いいたします。

グレッグ

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

dart - プールとクエリを閉じようとしたときのソケット エラー

クエリを閉じた直後にプールを閉じると、この例外が発生します。

問題は、クエリのクローズが Future を内部的に起動することであると思われるため、クローズが実際に終了する前に close() 関数が返されます。

プールがすぐに閉じられ、ソケットがすぐに閉じられます。これは、クエリのクローズ (Future のためにプールがクローズされるまで遅延される) が失敗し、ソケットを介して必要な情報を送信できないことを意味します。https://github.com/jamesots/sqljocky/issues/44で sqljocky へのチケットをオープンしましたが、応答がありません。応答を得るのに時間がかかる場合は回避策が必要です。

このコードにより、100% の確率で問題を再現できました。

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

dart - 1 つの HTML で 2 つの Dart コードを実行するにはどうすればよいですか

Dart アプリを構築しようとしています。

これが私が望んでいるプロセスです。

最初の接続で、ユーザーには読み込みページが表示されます。この間、彼にはアニメーションがあり、バックグラウンドで大きな dart ファイルがダウンロードされます (dart の dart2js から来ました)。

完了すると、ダウンロードしたスクリプトが実行され、アプリが動作を開始できます。

このプロセスの可能性について何か考えはありますか?

ありがとうございました。編集:

test.dart

0 投票する
3 に答える
626 参照

model-view-controller - Dart でインスタンス変数を変更するコールバック関数のスコープ

この種の質問はよく聞かれますが、問題をもう少し興味深いものにする、より具体的な制約があると思います。MVC パターンを使用して Dart でクライアント側アプリケーションを作成しています。私の目標は単純です。ボタンのクリックをリッスンし、バックエンド API への非同期要求をトリガーし、そのデータをユーザーに提示します。

少なくとも、モデル、ビュー、およびコントローラー クラスをそれぞれ 1 つずつ持っています。モデル クラスは、リクエストを作成し、受信したデータをまとめるメソッドを実装します。ビュー クラスは、関心のある DOM サブツリーをフィールドとして持ち、その中の要素を操作するメソッドを実装します。コントローラーは、モデル クラスとビュー クラスのそれぞれのインスタンスを 1 つフィールドとして持ち、ビューの要素にイベント ハンドラーを登録します。コントローラーのイベント ハンドラーは、モデルへの呼び出しを開始して要求を行い、データを返します。データはレンダリングのためにビューに渡されます。

非同期リクエストからモデルのインスタンス変数に受信データをキャプチャしようとすると、問題が発生します。すべてを適切にカプセル化しておきたい (そのため、最初に Dart を使用しています)。また、非同期要求からのデータを保持するためにグローバル変数を使用することは避けたいと考えています。私の現在のレイアウトの最小限の例は、以下のようになります。わかりやすくするために、ここではすべてのフィールドとメソッドを公開しました。

私が見ているエラーは、このすべての最後に現れるmodel.dataListフィールドに関係しています。null私の最初の赤面は、コールバック関数のスコープを理解していないことです。私が最初に理解した方法では、コールバックはリクエストのデータが到着したときにそれを処理し、準備ができたらインスタンス変数を設定するだけでした。おそらく、インスタンス変数はエイリアス化され、コールバックのスコープ内で変更されますが、戻りたい変数は決して変更されません。

オブジェクトをビューのメソッドに渡すことを考えましFutureた。これにより、処理自体が行われ、要素が副作用として DOM に追加されます。その手法は、私の MVC 設計を壊してしまいます (この最小限の作業例で今壊れている以上に)。

また、非同期プログラミングを完全に間違って使用している可能性も非常に高いです。view.update()これについてもっと考えると、イベントが発生したときに基本的にコントローラーでブロッキング呼び出しを行うため、非同期呼び出しは役に立ちません。Futureリクエストをコントローラーに渡しthen()、イベント ハンドラーがトリガーされたときにそこからリクエストのメソッドを起動する必要があるかもしれません。

Dart では、コールバック関数はどのスコープに存在し、最小限の副作用と最大限のカプセル化でそれらからデータを取得するにはどうすればよいですか?

注意: このよく議論される質問について詳しく説明するのは嫌いですが、同様の質問に対する以前の回答を読みましたが、役に立ちませんでした。

0 投票する
3 に答える
392 参照

dart - DART : プロパティ オブジェクトで httpRequest の結果をどのように割り当てることができますか?

オブジェクト プロパティ (my_json) に、外部ファイルから読み込まれた JSON リストを保存したいと思います。このコードでは、my_json プロパティは常に null と等しくなります:{

よろしくお願いします:)

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

mongodb - Future を 2 回呼び出した後の NoSuchMethodError

MongoDB からデータを取得する簡単な方法があります。

このメソッドを 1 回呼び出すと機能します。2 回続けて呼び出すと、NoSuchMethodError: method not found: 'query'.

誰でも問題を説明できますか?

完全なスタックトレースは次のとおりです。

mongo_dartの問題をオープンしました。