2016-12-01 11 views
2

私はサーバー側でSinatraを使用してAPIを開発しています。私はHTTPリクエストを作成したいと思いますが、後のイベント(別のイベント)が特定の応答値で後で完了するまでハングアップして待機し続けます。言い換えれば後でHTTPリクエストへの応答を待って送信するにはどうすればよいですか?

get '/api/foo/:request_identifier' do 
    # some code here 
    wait_until_finished params[:request_identifier] 
end 

# When this URL is visited, the hanging request with the matching 
# request identifier will complete, sending "foo response text" to the 
# client. 
get '/api/bar/:request_identifier' do 
    make_it_finish params[:request_identifier] "foo response text" 
    "bar response text" 
end 

どのように私はこの効果には、この、または何かを実装するだろうか?

私はまた、クライアントが常に完了したリクエストをポーリングするようリクエストしていると考えましたが、リクエスト数が多いとインターネット料金が高くなる可能性があります。

答えて

2

私はリクエストを掛けることに注意していますが、これはユーザーエクスペリエンスが優れていないためです。それは難しいです、あなたの問題の完全なコンテキストなし

  1. 使用event emitter
  2. 使用async library

:それはあなたが別の前に一つのこと仕上げを持っている必要がある場合は、ここではいくつかのオプションがあり、言われていますしかし、あなたが "Promise"のように聞こえる言葉に基づいて、あなたの問題をここで解決するでしょう。これはお勧め#2です。基本的に、事物2を実行する前に1つのことが終わるのを待つことができます。

関連する問題