我設計和實施的Node.js從Ubuntu的使用通過x3270 tool IBM3270協議來訪問IBM大型機的API。因此,Node.js處理spawn
s3270
進程並使用它的stdin
,stdout
和stderr
與IBM大型機進行通信。Node.js的API一樣的設計原理和工作流程
我已經實現了以下接口:
var hs = require('./hs');
var session = hs.createSession(opts);
session.on('error', function(err) {
console.log('ERROR: %s', err.message);
});
session.on('connect', function() {
console.log('** connected');
session.send('TRANS');
});
session.on('response', function(res) {
console.log(res);
session.disconnect();
});
session.on('disconnect', function() {
console.log('** disconnected');
session.close();
});
session.on('close', function() {
console.log('** closed');
});
session.connect();
一切工作得很好。
問題是以下幾點。我想使用Q promise library來獲取使用我的API更加有組織的客戶端代碼,並且還有類似API的Node.js,格式爲session.send(trans, cb(err, res) {})
。 我不知道我應該如何實現send
函數的方式,它接受回調。
歸納我的問題,我想知道像設計Node.js的API應該是什麼我第一次執行:
- 簡單
send(trans)
功能發出的事件和使用這種然後實現send('trans', cb(err, res) {})
或 - 實現
send('trans', cb(err, res) {})
第一(我不知道怎麼做),然後執行事件或 - 是如何實現的Node.js像API的正確方法
什麼我要找的是一般工作流程和設計,比如API,可以由Q承諾庫也消耗的Node.js時的設計原則。
它可能不完全回答你的問題,但看看Q的'denodeify'功能。它可以使用任何基於回調的函數,並將其轉換爲等價的基於promise的函數。 –
'Q.denodeify'或'Q.nfbind'通過Node.js風格函數創建一個承諾:'send(trans,cb(err,res){})'。關鍵是如何實現使用'send(trans)'和主要問題代碼清單中描述的事件接受回調的'send'函數。無論如何謝謝你! –
嗨,我試圖在這裏做同樣的事情,但我正在努力開始!你介意分享你的代碼樣本嗎? – user1513388