2015-08-27 79 views
0

在讀取節點mysql的documantation我看到了一個用法我粘貼下面奇怪的用法

var query = connection.query('SELECT * FROM posts'); 
query 
    .on('error', function(err) { 
    // Handle error, an 'end' event will be emitted after this as well 
    }) 
    .on('fields', function(fields) { 
    // the field packets for the rows to follow 
    }) 
    .on('result', function(row) { 
    // Pausing the connnection is useful if your processing involves I/O 
    connection.pause(); 

    processRow(row, function() { 
     connection.resume(); 
    }); 
    }) 
    .on('end', function() { 
    // all rows have been received 
    }); 

我不知道他們是如何使用這個事件那些可以用名字無論 用戶名稱中使用查詢例子,當我創建自定義事件query我第一次爲它們命名,例如var foo=new events.EventEmitter並在此之後的整個頁面,我必須把它作爲foo.on("someEvent") 但在這裏,他們以某種方式綁定用戶在示例代碼中的用戶名創建爲事件名稱的VAR的mysql查詢爲query,事件發射器有某種程度上的同名

和第二個問題怎麼可能到一連串的事件,因爲他們使用

.on("event").on("anotherEvent") 

這個問題可能聽起來很奇怪,但我真的不知道如何工作的,它會改變我的代碼設計完全

+0

它不是完全清楚你的第一個問題是什麼。你可以多解釋一下還是提供一些例子來幫助更好地理解問題? – mscdex

+0

更新現在的問題@mscdex – nikoss

回答

1

query只是你的變量名是node-mysql lib中Query的一個實例。您可以訪問所有對象導出的函數。

onEventEmitter在Node.js的核心繼承。關鍵的是,調用on返回「本身」即this

返回發射器,因此可來電鏈。

這允許您鏈調用on

+0

如何我可以返回事件發射器出cb函數我不明白它不會返回到變量 – nikoss

+0

啊我看到它是由模塊本身返回 – nikoss