3

除了 Promises A+ 规范外,我如何使用Superagent ?我正在开发一个同时使用 Superagent 和Bluebird的项目,我想使用该.then()语法,但如果不编写我自己的包装器代码,我无法找到一种简单的方法来做到这一点。

我看到了这个项目 ,但不想在每次调用时都使用 .promise() 。

是否有任何其他现有模块使它看起来更像蓝鸟?

更像是——

var request = ('superagent-wrapperModule');

request.get(url).then(..).catch(...) 

[编辑]我实际上已经制作了一个模块来按照我喜欢的方式执行此操作(类似于上面的示例)。

如果有人感兴趣 - github 链接npm 链接

4

1 回答 1

3

就像@idbehold 和@victorkohl 评论的那样,superagent需要打电话才能end知道正在发送请求。为此,superagent-bluebird-promise适配器选择使用一个.promise()方法,该方法也接受一个选项对象。

如果您不喜欢这样并且不需要选项,我建议您只需then在请求对象上定义自己的方法:

var request = require('superagent-bluebird-promise');
request.Request.prototype.then = function(s, e) {
    return this.promise().then(s, e);
};

这样你就可以使用

request.get(url).then(…).catch(…);

(我也为此打开了一个 Github 问题

于 2015-03-09T19:22:29.463 回答