9

REST リクエストを送信するためのライブラリを作成しました。

var rest = require('restler');
module.exports = {
  beginSession: function()
  {
    var options = {
        method: "GET",
        query: {begin_session: '1'}};
    rest.get('http://countly/i', options).
        on('complete', function(data, response){
            console.log('Status: ' + response.statusCode);
        });
  }
};

問題は、ライブラリを使用して呼び出しが応答されるたびに、「完了時」が複数回呼び出されることです。メソッドの最初の使用では「完了時」が 1 回だけ呼び出され、メソッドの 2 回目の使用では「完了時」が 2 回呼び出されます。等々....

私は何を間違っていますか?

ありがとうホセ

4

5 に答える 5

14

私もこれで苦労しました。しかし、インターネット上で答えが見つかりませんでした。最終的にはわかりますが。これは、rest.get() が呼び出されるたびに「complete」イベントが登録されることが原因でした。

私の解決策は、.on() の代わりに .once() を使用することです。例えば:

var rest = require('restler');
rest.get('url_to_fetch').once('complete', function(rtn, rsp){
     ....blah blah....
});
// refer here http://nodejs.org/api/events.html#events_emitter_once_event_listener

うまくいけば、これが役に立ちます。

于 2013-05-23T11:10:27.600 に答える
2

これは、呼び出しごとに新しいイベントを添付するためです。最初にイベントのバインドを解除してみてください。

于 2013-04-16T22:01:57.807 に答える
1

JSON 要求のコールバック ハンドラーで例外が発生した場合も、この動作が発生する可能性があります。

その解決策については、こちらのプル リクエストを参照してください: https://github.com/danwrong/restler/pull/94

于 2013-04-25T05:27:20.917 に答える