2014-06-25 78 views
0

向活動添加回調好嗎?像這樣?給事件添加回調

Client.prototype.send = function(data, cb) { 
    // convert json to string 
    data = JSON.stringify(data) 
    this.client.write(data) 

    // wait for the response of this request 
    this.client.on('data', function(data) { 
    var request = JSON.parse(data) 

    // return response as callback 
    if (request.type === data.type) { 
     cb(request) 
    } 

    }) 

} 

然後調用,如:

// send request and wait for reply 
client.send(data, function(response) { 
    // do stuff to reply/response 

    // this executes +1 times for every sent request should only do 1 request 1 response 
    console.log(response) 
}) 

做到這一點同類型的事件發出的每一次做的回調?
這是否會使性能受損?

回答

1

你問了幾個問題,讓我試着按順序回答。

是增加一個回調到事件好嗎?

當然,如果你想在事件後調用一個函數,那爲什麼不呢?

是否每次發出相同類型的事件時都會執行回調?

你有它編寫的方式,cb將僅request.type === data.type

這是否表現遭受叫什麼名字?

那要看情況。

只要加上一個參數是那個被稱爲有條件的功能,你真的不會有在該函數不會被調用的情況下在性能上任何明顯的差異。否則,這取決於您的回調函數的性能。

在一個合理的回調函數,這兩種情況下,我不會期望它的性能問題的原因。

+0

其實有些事情正在發生。每次我都會讓事情發生。它執行回調+1次。所以如果我做了10次。它執行10次。我只希望它爲每個請求做一個。某種請求/響應風格。 – majidarif

+0

我不清楚你想要發生什麼,發生了什麼。從我可以收集的內容中,您想要更多地控制函數何時運行? [也許你應該看看承諾,如jQuery延期對象](http://api.jquery.com/category/deferred-object/) – Flynn

+0

有關這個問題:http://stackoverflow.com/questions/24409167 /插座-server2server連接。 我將此標記爲已回答,因爲它的確在這裏回答了我的問題。 – majidarif