【问题标题】:How do I use bluebird promises with request-extensible?如何使用可扩展请求的蓝鸟承诺?
【发布时间】:2015-08-28 23:02:15
【问题描述】:

我想用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]
});

请求可扩展框架是异步的,但通过回调函数工作。我想用 bluebird 包装它,这样我就可以用它来代替 Promise。我该怎么做?

【问题讨论】:

  • requestExt 看起来不像异步函数。为什么要在这里使用 Promises?
  • 你要么使用request-promise 要么你承诺,你不需要两者都做。
  • @thefourtheye 我澄清了原帖。

标签: javascript node.js http promise bluebird


【解决方案1】:

我没有request-extensible 详细说明,但它返回的对象似乎不一定与“普通”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(...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2018-10-23
    • 2017-06-18
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多