如何在请求可扩展的情况下使用bluebird promises?

时间:2015-06-12 20:13:21

标签: javascript node.js http promise bluebird

我想使用bluebird编写基于promise的异步Web客户端。目前我正在使用request-promise包进行此操作。在我的文件的顶部,我只是把

    var Promise = require("bluebird");
    var request = require('request-promise');
    Promise.promisifyAll(request);

我很高兴。

现在我想添加HTTP缓存。如果没有蓝鸟,我知道这样做的方法是使用request-extensible

var requestExt = require('request-extensible');
var requestHttpCache = require('request-http-cache');
var httpRequestCache = new requestHttpCache({
  max: 1024 * 1024
});
var request = requestExt({
  extensions: [httpRequestCache.extension]
});

请求可扩展框架是异步的,但是通过回调函数工作。我想用蓝鸟包裹它,以便我可以将它与promises一起使用。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我没有详细介绍request-extensible,但似乎它返回的对象并不一定与" plain" request(例如,它没有任何快捷功能.get()/.post()/...。)

所以要用蓝鸟包裹它,在我看来这已经足够了:

var Promise    = require('bluebird');
var requestExt = require('request-extensible');
var request    = Promise.promisify(requestExt({ ... }));

// Use like this:
request('URL').then(...).catch(...)

// Or this:
request({ OPTIONS }).then(...).catch(...)