Node.js类API设计原则和工作流程
我正在为Node.js设计和实现一个API,通过IBM3270协议,使用Node.js从Ubuntu访问IBM大型机。因此Node.js进程Node.js类API设计原则和工作流程,node.js,api-design,Node.js,Api Design,我正在为Node.js设计和实现一个API,通过IBM3270协议,使用Node.js从Ubuntu访问IBM大型机。因此Node.js进程生成s3270进程,并使用其stdin、stdout和stderr与IBM大型机通信 我已经实现了以下接口: var hs = require('./hs'); var session = hs.createSession(opts); session.on('error', function(err) { console.log('ERROR: %
生成s3270
进程,并使用其stdin
、stdout
和stderr
与IBM大型机通信
我已经实现了以下接口:
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();
一切都很顺利
问题如下。我想用它来让使用我的API的客户端代码更有条理,并以session.send(trans,cb(err,res){}
的形式提供类似Node.js的API我不知道如何以接受回调的方式实现send
函数
概括我的问题,我想知道设计Node.js这样的API首先应该实现什么:
- 简单的
send(trans)
函数,该函数发出事件,然后使用该函数实现send('trans',cb(err,res){})
或
- 首先实现
send('trans',cb(err,res){})
(我不知道如何实现),然后实现事件或
- 如何正确实现Node.js类API
我要寻找的是在设计Node.js(如API)时的一般工作流程和设计原则,Q promise library也可以使用这些原则。正如我意识到的,为Node.js设计异步API有两种方法:
- 基于回调的,可通过
EventEmitter
- 基于承诺的可通过
var d=Q.defer()实现代码>,返回d.promise代码>和d.resolve()代码>来自
为了使代码更有条理,我使用基于承诺的方法实现了API,只使用了Q库。此外,Q库还具有Q.nfcall()等函数代码>,Q.nfapply()代码>和Q.nfbind()
将基于回调的Node.js API转换为基于承诺的等效API。它可能无法完全回答您的问题,但请查看Q的去定义
函数。它可以使用任何基于回调的函数,并将其转换为等效的基于承诺的函数。Q.denodeify
或Q.nfbind
从Node.js样式的函数创建承诺:send(trans,cb(err,res){}
。重点是如何实现send
函数,该函数使用send(trans)
和主要问题代码列表中描述的事件接受回调。无论如何,谢谢你!嗨,我在这里尝试做完全相同的事情,但我正在努力开始!你介意分享一些你的代码样本吗?很抱歉这么晚才回复。工作示例文件非常大,无法粘贴到这里。如果您仍然对工作示例代码感兴趣,请发送电子邮件给我。Hi@VolodymyrProkopyuk,您介意与我分享一些代码吗?