node.js - 无法使用 node.js 获取请求超时响应
问题描述
我正在尝试在request
node.js 的模块中设置超时值,但根据给定的时间它没有返回响应。我在下面解释我的代码。
postRequestOptions.url = `${nsoObj.protocol}://${nsoObj.ipAddress}:${nsoObj.httpPortNbr}/jsonrpc`;
postRequestOptions.headers = {
'Content-Type': 'application/json'
};
postRequestOptions.body = {
jsonrpc: '2.0',
id: 1,
method: 'login',
timeout: 5000,
params: {
user: nsoObj.userName,
passwd: nsoObj.password
}
};
request(postRequestOptions, (error, response, loginResponse) => {
console.log('\n error: ', error);
console.log('\n loginResponse: ', loginResponse);
if (error || !loginResponse.id) {
responseObj = {
status : 'error',
msg : `Error occurred while performing Login into "${nsoObj.nsoNickName}" Instance. ${error}`,
body : null
};
reject(responseObj);
} else {
loginResponse.sessionId = response.headers['set-cookie'][0];
responseObj = {
status : 'success',
msg : `Successfully performing Login into "${nsoObj.nsoNickName}" Instance`,
body : loginResponse
};
resolve(responseObj);
}
});
});
在这里,我正在使用request
模块node.js
并设置超时5ms
。但是当我运行它时,它需要 2 分钟才能发回超时错误响应。
在这里,我需要如果此请求无法在其中发回响应,5 milisecond
那么它应该返回超时错误。
解决方案
从正文中删除超时并使用postRequestOptions.timeout = 5000;
这样做:
postRequestOptions.url = `${nsoObj.protocol}://${nsoObj.ipAddress}:${nsoObj.httpPortNbr}/jsonrpc`;
postRequestOptions.headers = {
'Content-Type': 'application/json'
};
postRequestOptions.body = {
jsonrpc: '2.0',
id: 1,
method: 'login',
params: {
user: nsoObj.userName,
passwd: nsoObj.password
}
};
postRequestOptions.timeout = 5000;//should be outside the body
request(postRequestOptions, (error, response, loginResponse) => {
console.log('\n error: ', error);
console.log('\n loginResponse: ', loginResponse);
if (error || !loginResponse.id) {
responseObj = {
status : 'error',
msg : `Error occurred while performing Login into "${nsoObj.nsoNickName}" Instance. ${error}`,
body : null
};
reject(responseObj);
} else {
loginResponse.sessionId = response.headers['set-cookie'][0];
responseObj = {
status : 'success',
msg : `Successfully performing Login into "${nsoObj.nsoNickName}" Instance`,
body : loginResponse
};
resolve(responseObj);
}
});
});
推荐阅读
- makefile - 连续运行 Makefile 会出现“No rule to make target”错误
- c - C 新手——我在这里做一些不安全的事情吗?
- wordpress - 将 woocommerce 产品排序添加到自定义订单 + 价格
- python - 尝试运行名为 PspNet 的 Keras 分割模型时出现“NameError: name 'np' is not defined”
- ios - 使用偏移时导航栏项目可点击区域切割
- tfs - 如何为 TFS 中创建的每个新功能自动创建用户故事
- php - 将 HTML 附加到 PHP 字符串
- javascript - 来自 API 数据的 for 循环中的 if 语句
- .net-core - F# FSI 和 .Net 核心。找不到正确的 System.Runtime.dll
- node.js - 类型“未知 []”缺少类型“[字符串,未知]”的以下属性:0、1ts(2739)