答えて
after_filter
が実行されているページをレンダリングした後remote_actionメソッドを呼び出す必要が
after_filter :remote_action, only: :update
def update
@res = MyService.do_action foo, bar
return render json: @res[:json], status: @res[:status] unless @res[:success]
end
def remote_action
# There is remote http request
end
htmlに変換されますが、クライアントに応答としてhtmlが送信されるより前にはとなります。したがって、リモートHTTPリクエストを作成するような処理が遅い場合は、リモートリクエストが完了するのを待つ必要があるため、応答が遅くなります。つまり、リモートリクエストが応答をブロックします。
ブロッキングを回避するには、別のスレッドをフォークしできます。これを使用して
https://github.com/tra/spawnling
を見て、あなただけの
def remote_action
Spawnling.new do
# There is remote http request
end
end
リモート呼び出し意志にあなたのコードを変更します応答が返される前に引き続きトリガーされますが、新しいスレッドにフォークされているため、応答はリモート要求が戻ってくるのを待たずにただちに実行されます。
https://github.com/collectiveidea/delayed_jobを見ることもできます。https://github.com/collectiveidea/delayed_jobは、ジョブをデータベーステーブルに入れ、別のプロセスがジョブを取り出して実行します。
ありがとうございました!出来た! –
素晴らしい!私の答えを正しいものとして自由に記入してください:) –
- 1. ビューがレンダリングされた後にメソッドを呼び出す方法3
- 2. * ngIfレンダリング後にjavascript関数を呼び出す方法
- 3. API呼び出し後のデータのレンダリング方法は? (Vue.js)
- 4. メソッドを呼び出す方法は?
- 5. ページをレンダリングさせずにAJAX経由でメソッドを呼び出す方法は?
- 6. ViewModelのマッピング後にAutoMapperがメソッドを呼び出す方法
- 7. 変更後にメソッドを呼び出す方法DependencyProperty
- 8. 別のメソッドの後にsegueを呼び出す方法
- 9. ユーザーコントロールの表示後にメソッドを呼び出す方法
- 10. UITextViewを呼び出す方法addTargetメソッドを呼び出す
- 11. C#でメソッド/呼び出しを別のメソッドから呼び出す方法は?
- 12. Wicket DataviewをAjaxPagingNavigatorでレンダリングした後にJavascriptメソッドを呼び出す方法はありますか?
- 13. ReactJs初期レンダリング後にAPIを再呼び出しする方法は?
- 14. 別のキーボードをレンダリングするためにsetInputViewメソッドを呼び出す方法
- 15. 表示された後、UserControlでメソッドを呼び出す方法?
- 16. メソッドでスレッドを呼び出す方法
- 17. メソッドを呼び出す方法
- 18. メソッドを一度呼び出す方法
- 19. ボタンでメソッドを呼び出す方法
- 20. ログインページでメソッドを呼び出す方法
- 21. tick()メソッドを呼び出す方法
- 22. Javaメソッドを呼び出す方法
- 23. C#でメソッドを呼び出す方法
- 24. jQuery.sheet.SUM()メソッドの呼び出し方法は?
- 25. ユーザーが正常にログインした後にメソッドを呼び出す方法は?
- 26. 仕上げ後にメソッドを呼び出す方法呼び出しを更新しますか?
- 27. a4jリンクが呼び出された後にRichFacesコンポーネントを再レンダリングする方法
- 28. AlarmManagerが起動した後にAlarmManagerメソッドを呼び出す方法は?
- 29. rubyで初期化した直後にメソッドを呼び出す方法は?
- 30. SuperclassメソッドからSubclassメソッドを呼び出す方法は?
なぜこのようにする必要があるのか分かりませんか?あなたはなぜ後に呼び出される必要があるのかについて、より多くの背景を与えることができますか?ページがクライアント側でレンダリングされた後、このアクションをトリガーするjs経由でapi呼び出しを行うことができます。 – penner
リモートサーバーでリクエストするには時間がかかります。たとえば、バックグラウンドでこのアクションを呼び出す必要があります。twitter apiを使用してツイートを送信する –