タグ付けされた質問 「asynchronous」

非同期プログラミングは、通常、ソフトウェアのパフォーマンス、応答性、および/または構成可能性を向上させるために、待ち時間が長いか優先度の低い操作を延期するための戦略です。このような戦略は、通常、イベント駆動型プログラミングとコールバックを組み合わせて使用​​し、オプションでコルーチンやスレッドを介して同時実行性を利用します。

8
非同期ネットワークリクエストを含むSwift forループの実行が完了するまで待機します
for inループで一連のネットワークリクエストをfirebaseに送信し、メソッドの実行が完了したら、データを新しいビューコントローラーに渡します。これが私のコードです: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] = snapshot.value }) } // Segue to new view controller here and pass datesArray once it is complete 私にはいくつかの懸念があります。最初に、forループが終了してすべてのネットワーク要求が完了するまで、どのように待つのですか?observeSingleEventOfType関数は変更できません。FirebaseSDKの一部です。また、forループのさまざまな反復からdatesArrayにアクセスしようとすることで、ある種の競合状態を作成しますか(意味があると思います)。私はGCDとNSOperationについて読んでいましたが、これは私が作成した最初のアプリであるため、少し迷っています。 注:Locations配列は、firebaseでアクセスする必要があるキーを含む配列です。また、ネットワーク要求が非同期で発生することも重要です。すべての非同期リクエストが完了するまで待ってから、datesArrayを次のビューコントローラーに渡します。

6
ASP.NET MVCで非同期操作を実行する.NET 4のThreadPoolのスレッドを使用する
この質問の後、ASP.NET MVCで非同期操作を使用するときに快適になります。それで、私はそれに2つのブログ投稿を書きました: C#5.0およびASP.NET MVC Webアプリケーションでのタスクベースの非同期プログラミングに関する私の見解 ASP.NET MVC 4のタスクベースの非同期プログラミングモデル(TAP)による非同期データベース呼び出し ASP.NET MVCでの非同期操作に関する誤解が多すぎます。 私はいつもこの文章を聞きます:操作が非同期で実行されれば、アプリケーションはより良くスケールできます そして、私はこの種の文章もたくさん聞いた:大量のトラフィックがある場合は、クエリを非同期に実行しない方がいいかもしれません-1つのリクエストを処理するために2つの追加スレッドを消費すると、他の受信リクエストからリソースが奪われます。 この2つの文は一貫していないと思います。 ASP.NETでスレッドプールがどのように機能するかについてはあまり情報がありませんが、スレッドプールのスレッドのサイズには制限があることを知っています。したがって、2番目の文はこの問題に関連している必要があります。 また、ASP.NET MVCの非同期操作で.NET 4のThreadPoolのスレッドが使用されているかどうかを知りたいのですが。 たとえば、AsyncControllerを実装すると、アプリはどのように構成されますか?大量のトラフィックが発生した場合、AsyncControllerを実装することは良い考えですか? この黒いカーテンを目の前に置いて、ASP.NET MVC 3(NET 4)での非同期に関する取引について説明してくれる人はいますか? 編集: 以下のドキュメントをほぼ数百回読みましたが、主要な取引は理解していますが、一貫性のないコメントが多すぎるため、混乱しています。 ASP.NET MVCでの非同期コントローラーの使用 編集: 以下のようなコントローラアクションがあるとしましょう(AsyncControllerただし、実装ではありません)。 public ViewResult Index() { Task.Factory.StartNew(() => { //Do an advanced looging here which takes a while }); return View(); } ご覧のように、私は作戦を発動し、それを忘れます。その後、完了するのを待たずにすぐに戻ります。 この場合、これはスレッドプールのスレッドを使用する必要がありますか?もしそうなら、それが完了した後、そのスレッドはどうなりますか?DOESはGCで来て、それが完了した直後にクリーンアップ? …

16
非同期のjdbc呼び出しは可能ですか?
データベースへの非同期呼び出しを行う方法はあるのでしょうか。 たとえば、処理に非常に長い時間がかかる大きなリクエストがあるとします。リクエストを送信し、リクエストが値を返すときに(リスナー/コールバックなどを渡すことによって)通知を受け取りたいと考えています。データベースが応答するのを待つのをブロックしたくありません。 スレッドのプールを使用することは、スケーリングしないので解決策であるとは思いません。大量の同時リクエストの場合、これは非常に多数のスレッドを生成します。 この種のネットワークサーバーの問題に直面しており、select / poll / epollシステムコールを使用して、接続ごとに1つのスレッドが存在しないようにすることで解決策を見つけました。データベースリクエストで同様の機能を使用する方法を知りたいだけですか? 注:FixedThreadPoolを使用するのが適切な回避策である可能性があることは承知していますが、(余分なスレッドを使用せずに)本当に非同期のシステムを開発した人がいないことに驚いています。 **更新** 実際の実用的なソリューションがないため、私は自分でライブラリ(finagleの一部)を作成することにしました:finagle-mysql。それは基本的にmysql要求/応答をデコード/デコードし、内部でFinagle / Nettyを使用します。接続数が非常に多い場合でも、非常によく拡張されます。

23
Node.jsで非同期関数の長いネストを回避する方法
DBからのデータを表示するページを作成したいので、DBからデータを取得する関数をいくつか作成しました。私はNode.jsの初心者なので、理解している限り、すべてを1つのページ(HTTP応答)で使用したい場合は、すべてをネストする必要があります。 http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); var html = "<h1>Demo page</h1>"; getSomeDate(client, function(someData) { html += "<p>"+ someData +"</p>"; getSomeOtherDate(client, function(someOtherData) { html += "<p>"+ someOtherData +"</p>"; getMoreData(client, function(moreData) { html += "<p>"+ moreData +"</p>"; res.write(html); res.end(); }); }); }); そのような関数がたくさんあると、入れ子が問題になります。 これを回避する方法はありますか?複数の非同期関数を組み合わせる方法に関係していると思います。これは基本的なことのようです。

7
C#の一般的なタイムアウトを実装する
コードの単一行(または匿名デリゲート)をタイムアウトで実行する一般的な方法を実装するための良いアイデアを探しています。 TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min 私のコードが気質的なコードと対話する(変更できない)多くの場所でエレガントに実装できるソリューションを探しています。 さらに、可能であれば、問題のある「タイムアウト」コードをさらに実行しないようにしたいと思います。



6
void asyncメソッドを待つ
void asyncメソッドがそのジョブを完了するのをどのように待つことができますか? たとえば、次のような関数があります。 async void LoadBlahBlah() { await blah(); ... } ここで、他の場所に進む前に、すべてがロードされていることを確認したいと思います。
155 c#  asynchronous 

11
3つの関数を順番に実行するには、どのように呼び出す必要がありますか?
この関数を次々と呼び出す必要がある場合は、 $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); 私はjQueryで次のようなことができることを知っています: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); しかし、jQueryを使用しておらず、呼び出したいとしましょう。 some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); どのように私は実行するために、この関数を呼び出す必要がありsome_3secs_function、そのコールが終了した後、その後、実行some_5secs_functionし、そのコールが終了した後、コールsome_8secs_function? 更新: これはまだ機能しません: (function(callback){ $('#art1').animate({'width':'1000px'},1000); callback(); })((function(callback2){ $('#art2').animate({'width':'1000px'},1000); callback2(); })(function(){ $('#art3').animate({'width':'1000px'},1000); })); 3つのアニメーションが同時に開始します 私の間違いはどこですか?

17
React-DOMのレンダリング中に読み込み画面を表示しますか?
これは、Google Adsenseアプリケーションページの例です。メインページの前に表示されるロード画面が後に表示されます。 Reactで同じことを行う方法がわかりません。Reactコンポーネントによってレンダリングされたロード画面を作成すると、ページがロードされている間は、DOMがレンダリングされるまで待機する必要があるため表示されません。 更新: 私は、スクリーンローダーを配置index.htmlしてReact componentDidMount()ライフサイクルメソッドで削除することで、私のアプローチの例を作成しました。 例とreact-loading-screen。

7
Node.js package.jsonのメインパラメータ
すでにかなりの検索を行っています。ただし、Node.jsのpackage.jsonの主なパラメーターについてはまだ疑問があります。 このフィールドに入力するとどのように役立ちますか?別の言い方をすると、このフィールドが存在する場合、モジュールを別のスタイルで開始できますか? メインパラメータに複数のスクリプトを入力できますか?はいの場合、2つのスレッドとして開始されますか?いいえの場合、モジュールで2つのスクリプトを開始し、それらを並行して実行するにはどうすればよいですか? 2つ目の質問はかなり奇妙なことです。これは、OpenShiftでNode.jsアプリケーションをホストしているためですが、アプリケーションは2つの主要コンポーネントで構成されています。1つはREST APIで、も​​う1つは通知配信サービスです。 通知配信プロセスがREST APIをシングルスレッドとして実装した場合、REST APIがブロックされると思います。ただし、同じMongoDBカートリッジに接続する必要があります。さらに、可能であれば、両方のコンポーネントを同じギアで使用できる場合は、1つのギアを節約したいと思います。 どんな提案も大歓迎です。

15
PHPタスクを非同期で実行する
私はやや大規模なWebアプリケーションで作業しており、バックエンドのほとんどはPHPです。コードのいくつかのタスクを完了する必要がある場所がいくつかありますが、ユーザーに結果を待たせたくありません。たとえば、新しいアカウントを作成するときに、ウェルカムメールを送信する必要があります。しかし、「登録の完了」ボタンを押したときに、実際にメールが送信されるまで待たせたくありません。プロセスを開始して、すぐにユーザーにメッセージを返したいだけです。 今までのところ、私はexec()を使ってハックのように感じるものを使用しています。基本的に次のようなことをしています: exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); うまくいくようですが、もっと良い方法があるかどうか疑問に思っています。MySQLテーブルのタスクをキューに入れるシステムと、そのテーブルに1秒に1回クエリを実行し、見つかった新しいタスクを実行する別の長時間実行PHPスクリプトを書くことを検討しています。これには、将来、必要に応じてタスクを複数のワーカーマシンに分割できるという利点もあります。 車輪を再発明していますか?exec()ハックやMySQLキューより良い解決策はありますか?

12
JavaScriptで非同期関数を作成するにはどうすればよいですか?
このコードをチェックしてください: <a href="#" id="link">Link</a> <span>Moving</span> $('#link').click(function () { console.log("Enter"); $('#link').animate({ width: 200 }, 2000, function() { console.log("finished"); }); console.log("Exit"); }); コンソールに表示されるように、「アニメーション」関数は非同期であり、イベントハンドラーブロックコードのフローを「フォーク」します。実際には : $('#link').click(function () { console.log("Enter"); asyncFunct(); console.log("Exit"); }); function asyncFunct() { console.log("finished"); } ブロックコードの流れに従ってください! function asyncFunct() { }この動作で自分を作成したい場合、javascript / jqueryでどのように作成できますか?私はを使用せずに戦略があると思います setTimeout()


17
jasmine:非同期コールバックは、jasmine.DEFAULT_TIMEOUT_INTERVALで指定されたタイムアウト時間内に呼び出されませんでした
私はという角度のサービスを持っていますrequestNotificationChannel: app.factory("requestNotificationChannel", function($rootScope) { var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_"; function deleteMessage(id, index) { $rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index }); }; return { deleteMessage: deleteMessage }; }); 私はジャスミンを使用してこのサービスを単体テストしようとしています: "use strict"; describe("Request Notification Channel", function() { var requestNotificationChannel, rootScope, scope; beforeEach(function(_requestNotificationChannel_) { module("messageAppModule"); inject(function($injector, _requestNotificationChannel_) { rootScope = $injector.get("$rootScope"); scope = rootScope.$new(); …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.