私はいくつかのjavascriptを書いてきましたが、私が環境について気に入っているいくつかの事の1つは、非同期イベントのハンドラを作るための約束/未来を使う方法です。C++の未来/ javascriptの約束?
C++では未来の結果が利用可能になるまでブロックする必要がありますが、Javascriptでは.then(fn)を書くことができ、結果が準備ができたら関数を呼び出します。これは、後で呼び出し元と同じスレッドでこれを行うため、スレッド同期に関する問題はありません。少なくともC++と同じではありません。
私はC++思っているようなもの -
auto fut = asyncImageLoader("cat.jpg");
fut.then([](Image img) { std::cout << "Image is now loaded\n" << image; });
は、cでこれを達成する方法はあります++?明らかに、コールバックのディスパッチを処理するには、何らかのイベントキューとイベントループが必要です。私はたぶん最終的にこのコードを書くことができましたが、標準的な機能を使って簡単に目的を達成する方法があるかどうかを見たいと思っていました。
重複していませんが、密接に関連しています:http://stackoverflow.com/questions/14489935/implementing-futurethen-equivalent-for-asynchronous-execution-in-c11 –
とにかく重複していませんが、 )何らかの理由で私の検索でそれが見つからなかった。 – jcoder
"これは[javascript]が同じスレッドでこれを行うことが重要です"。通常、2つのスレッドが関係します。 (i)遅延が生成され、非同期ハンドラが添付されたスレッド、(ii)遅延が満たされた、または拒否されたスレッド、および非同期ハンドラが実行されるスレッド。 (a)ハンドラは、遅延が作成されたときと同じスレッドに必ずしも付加される必要はなく、(b)進行イベントも処理される可能性があり、(c)遅延/遅延が実現/任意の数のさらなるスレッドが関与してもよい。 –