通常、非同期関数は、たとえば、最後async(arg, cb)
にコールバック関数プレースホルダー(cb
)を提供するため、非同期ルーチンの終了時に独自のコードを実行できます。非同期関数にコールバック引数がない場合はどうなりますか?明らかにcb
欠けているもの:
async(args);
myFunction();
myFunction()
最初に実行されます。myFunction()
終了後にのみ実行するにはどうすればよいasync
ですか?独自のコールバックラッパーを作成しようとしましたが、成功しませんでした。それらは単に関数呼び出しをリダイレクトするだけでした。
編集私は上記の答えに興味がありますが、私がこの状況に遭遇した方法の例を示します。
私の例は、Googleマップのルート案内サービスです。非同期関数は、と呼ばれる描画ルーチンdirectionsDisplay.setDirections(result);
であり、描画が完了した後、再センタリングしてズームインしたいと思います。setTimeout
やりたいことが起こるように3秒をまとめましたが、それは不器用な解決策です。GoogleMapsAPIを変更することは問題外のようです。何が良いでしょうか?
道順サービスはこちらです。
どちらかのドロップダウンで都市を選択するだけです。3秒後、マップが移動するはずです。