Node.js超时并请求POST

时间:2016-06-30 09:05:24

标签: node.js post requestify

我试图通过从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);
            });

2 个答案:

答案 0 :(得分:2)

我对请求知之甚少,但您确定可以使用帖子到https地址吗?在自述文件中,只有requestify.request(...)使用https地址作为示例。 (see readme

我绝对可以给你一个提示,就是永远接受你的承诺:

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

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

答案 1 :(得分:1)

每次调用Requestify都允许你传递一个Options对象,这里描述了该对象的定义:Requestify API Reference

您正在使用short方法进行POST,因此我首先会显示,但同样的语法也适用于put,请注意get,{ {1}},delete不接受数据参数,您通过head配置属性发送网址查询参数。

params

现在,requestify.post(url, data, config) requestify.put(url, data, config) requestify.get(url, config) requestify.delete(url, config) requestify.head(url, config) 有一个config属性

  

超时 {number}

     

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

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

timeout

或内联:

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

所以我们现在将它们放在原始请求中:

  

正如@Jabalaja指出的那样,你应该捕获任何异常消息,但是你应该使用延续的错误参数来执行此操作。   (requestify.post(url, data, { timeout: 60000 })

.then