1

我试图通过从 node.js 到 PHP 文件的 POST 请求用户的状态。我的问题是我调用的网络服务回复速度非常慢(4 秒),所以我认为 .then 在 4 秒之前完成,因此什么也不返回。知道我是否可以延长请求的时间吗?

requestify.post('https://example.com/', {
              email: 'foo@bar.com'
            })
            .then(function(response) {
                var answer = response.getBody();
                console.log("answer:" + answer);
            });
4

2 回答 2

2

我对 requestify 不是很了解,但你确定你可以使用 post 到 https 地址吗?在自述文件中,仅 requestify.request(...) 使用 https 地址作为示例。(见自述文件

不过,我绝对可以给您的一个提示是始终兑现您的承诺:

requestify.get(URL).then(function(response) {
    console.log(response.getBody())
}).catch(function(err){
    console.log('Requestify Error', err);
    next(err);
});

这至少应该给你你的承诺的错误,你可以指定你的问题。

于 2016-07-07T13:43:43.993 回答
1

对 Requestify 的每次调用都允许您通过一个Options对象,该对象的定义在此处描述:Requestify API 参考

您正在使用shortPOST 方法,所以我将首先展示,但同样的语法也适用,put请注意 ,get不接受数据参数,您通过config 属性发送 url 查询参数。deleteheadparams

requestify.post(url, data, config)
requestify.put(url, data, config)
requestify.get(url, config)
requestify.delete(url, config)
requestify.head(url, config)

现在,configtimeout房产

超时{数字}

为请求设置超时(以毫秒为单位)。

因此,我们可以使用以下语法指定 60 秒的超时时间:

var config = {};
config.timeout = 60000;
requestify.post(url, data, config)

或内联:

requestify.post(url, data, { timeout: 60000 })

因此,现在让我们将其放在您的原始请求中:

正如@Jabalaja 指出的那样,您应该捕获任何异常消息,但是您应该使用错误参数继续执行此操作。( .then)

requestify.post('https://example.com/', {
    email: 'foo@bar.com'
}, {
    timeout: 60000
})
.then(function(response) {
    var answer = response.getBody();
    console.log("answer:" + answer);
}, function(error) {
    var errorMessage = "Post Failed";
    if(error.code && error.body)
        errorMessage += " - " + error.code + ": " + error.body
    console.log(errorMessage);
    // dump the full object to see if you can formulate a better error message.
    console.log(error);
});
于 2018-02-18T23:51:49.480 回答