使用具有 A+ 规格的 Superagent?

Use Superagent with A+ spec?

我如何使用 Superagent but with the Promises A+ spec? I'm working on a project that uses both Superagent and Bluebird,我想使用 .then() 语法,但如果不编写我自己的包装代码,我想不出一个简单的方法来做到这一点。

I see this project 但不想在每次调用时都使用 .promise()。

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

更像是 -

var request = ('superagent-wrapperModule');

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

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

如果有人感兴趣 - github link and npm link

就像@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(…);

(这个我也开了a Github issue