Ben sayfanın oluşturulmasına sonra uzaktan hizmet isteğinde bulunmanız gerekirİşleme sonrası yöntem nasıl çağrılır?
Benim denetleyicisi: Ben şablon olmuştur sonra
Ben sayfanın oluşturulmasına sonra uzaktan hizmet isteğinde bulunmanız gerekirİşleme sonrası yöntem nasıl çağrılır?
Benim denetleyicisi: Ben şablon olmuştur sonra
after_filter
çalıştırılan sayfanın oluşturulmasına sonra remote_action yöntemini çağırmanız gerekir
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'ye dönüştürülür, ancak'dan önce html istemciye bir yanıt olarak gönderilir. Yani, uzak bir http isteği yapmak gibi yavaş bir şey yapıyorsanız, o zaman bu uzak isteğin bitmesini beklemesi gerektiği için yanıtınızı yavaşlatacaktır: başka bir deyişle, uzak istek yanıtınızı engelleyecektir.
engellemeyi önlemek için, farklı bir iş parçacığı kapalı çatal olabilir: Bu kullanma
https://github.com/tra/spawnling
de bakabilirsiniz, sadece
def remote_action
Spawnling.new do
# There is remote http request
end
end
uzaktan çağrı olacak şekilde kodunuzu değiştirecek yanıt geri gönderilmeden önce tetiklenir, ancak yeni bir iş parçacığına dönüştürüldüğü için, yanıt, uzaktan isteğin geri gelmesini beklemez, hemen gerçekleşir.
Ayrıca, ayrı bir işlemin bunları çekip yürüteceği bir veritabanı tablosuna iş koyan https://github.com/collectiveidea/delayed_job'a da bakabilirsiniz.
Teşekkür ederiz! İşe yaradı! –
Harika! Cevabımı doğru olarak işaretlemekte özgürsünüz :) –
Bunu neden yapmanız gerektiğinden emin değil misiniz? Neden aranması gerektiğine dair daha fazla bilgi verebilir misiniz? Bu eylemi, istemci tarafında oluşturulduktan sonra tetikleyen js aracılığıyla bir api çağrısı yapabilirsiniz. – penner
Uzak sunucuda istekte bulunmak biraz zaman alır ve bu eylemi arka planda çağırmam gerekir, örneğin: twitter api üzerinden tweet gönderme –