2

我正在尝试获取返回 .cert 正文的请求,但使用 bluebird 中的 .spread 似乎只返回 1 个参数,而不是应该返回的两个参数。

request.getAsync( {url: payload.publicKeyUrl, encode:null } )
    .spread( function(res, body){
        console.log(body);
    } );

这将引发 body 未定义的错误。响应返回整个 json 格式,包括与结构混淆的字符串格式的证书。

我正在使用请求 2.67.0 和蓝鸟 3.1.1。这是证书网址:https ://static.gc.apple.com/public-key/gc-prod-2.cer

4

1 回答 1

6

Bluebird 3.0 将 promisification 更改为默认为在执行 promisification 时仅使用第一个参数。

在您的呼叫中,Promise.promisifyAll(require("request"))您需要传递第二个参数以表明您对所有参数感兴趣Promise.promisifyAll(require("request"), {multiArgs: true})

或者,您可以使用request-promise为您执行此操作的软件包和其他一些小修复(它在内部使用 bluebird)。

于 2016-01-14T17:40:25.433 回答