ポスト

プログラマーの皆さんに質問です。非同期のAPIコールが複数あり、かつ、そのいくつかは依存関係がないので同時に行っても良い場合って、どうやって処理してます?await を羅列するだけだと順番にしか実行してくれないので、並列処理が出来ないので、何らかの工夫が必要ですよね。

メニューを開く

Satoshi Nakajima @GraphAI@snakajima

みんなのコメント

メニューを開く

Fetch からプロミス作ってPromise.allするっていうのは? そもそもawait使わなくていいと思いまする候

メニューを開く

その手の非同期処理はRxJSで書いてますね

伊東ノト(NOTO)@notoitoh

メニューを開く

ん??? 何故依存関係がないのに、順番になるの。常にその動作でawait並べてるならば非同期とか必要ある?順序性が何かで保たれてるとしかみえない。 それと非同期と並列は違う。非同期並べても並列にはならない。

cryptoisnotvirtual@cryptoisnotvirt

メニューを開く

大前提が大雑把すぎて、言語は何とか、APIが関数呼び出しなのか、XMLやJSONでリクエスト投げて、レスポンスを待つWebサービスみたいなのか? 後者の場合、依存関係は、サーバ側の実装かクライアント側の実装なのか? 依存関係がないAPIを並列実行したければ、スレッドで呼べばいいんでないの?

Studio_NAND@Studio_NAND

メニューを開く

昔、通信系のファームウェアを開発していた時、そういう複雑な依存関係は状態遷移表を作って管理していました。

うおめし@uomeshi

メニューを開く

関数の戻り値をすぐawaitするのではなく、Promiseのまま引回し、必要なところでawait Promise.allして取り出すと、良い気がします

ウィルフレム(Wilfrem)@WilfremLuminous

メニューを開く

Promise.all は、複数の非同期コールが全部終わるまで待つ時には良いんですが、依存関係が絡まっている時には使えませんね。例えば、AからFの非同期コールがあった時、DはAとBの結果、EはAとCの結果、FはBとCの結果が必要だった場合などです。

Satoshi Nakajima @GraphAI@snakajima

メニューを開く

rxjs系のオペレータで処理しています。と言ってもPromise系とだいたい同じなんですが、、 yamlでフローが書けるのもお手軽で素晴らしいですね。 可視化もしやすそう。 何よりコーディングスタイルが本当に綺麗で勉強になりました。 pic.twitter.com/Elz5RznaQ3

Programmer.cbl@dev999900001111

メニューを開く

使いたいライブラリが全てC++から呼び出せるという状況ですが、MediaPipe (C++製のパイプライン処理ライブラリ)を使ってノードベースで処理を書き、そのJSバインディングを作ってJS側から呼び出す、というような事をしたことがあります。 JSのみで完結するMediaPipeと同じようなライブラリが欲しいです

こんこん@kinsei0916

人気ポスト

もっと見る
Yahoo!リアルタイム検索アプリ