【发布时间】:2014-06-04 20:07:58
【问题描述】:
我使用 github 在我的节点应用程序中进行身份验证。我已经构建了以下代码:
var req = request(postOptions, function (res) {
res.on('data', function (d) {
...
var getOptions = parseUrl('https://api.github.com/user?access_token=' + accessToken);
...
var req = request(getOptions, function (resp) {
...
resp.on('data', function (d) {
...
})
.on('end', function () {
...
})
});
req.end();
});
});
req.write(postData);
req.end();
我删除了一些代码,因为这里的重点是我在请求中有一个请求。现在,nodejs 有deferreds 问题是这是否可以用来简化上面的代码?
【问题讨论】:
-
查看
promisify。但一般来说,代码必须支持 Promise 才能使 Promise 起作用。 -
这段代码有什么问题?
-
@mihai 事件比承诺/延迟提供更多的粒度。 Promise 可以被实现或拒绝,并且只有一次,它们与手头任务相关的状态是正在运行或已完成。承诺中没有事件“数据”的等价物。事件使您能够逐步完成任务,承诺只告诉您运行和退出代码。有可能用promise代替它。但它们缺乏表现力。
标签: javascript node.js httprequest deferred