node.js - 不等待 API 请求响应
问题描述
所以我有一个可以工作的 node.js 代码来处理来自网站 API 的数据。我想加快一点速度,我认为最好的方法是发送一个请求,在等待响应的同时执行一些代码,而不是像现在这样等待响应。现在我的代码基本上是这样的:
function httpGet(url){
var response = requestSync(
'GET',
url
);
return response.body;
}
var returnCode;
var getUrl = "url"
returnCode = httpGet(getUrl);
var object = JSON.parse(returnCode);
//Some code executes
正如您所看到的那样,由于您正在等待响应,因此会浪费一些时间。我会在这个意义上寻找一些东西(伪代码):
- 发送请求
- 一些与请求无关的代码在请求发送后立即执行
- 完成上述部分后,解析请求结果
总之,我正在寻找一种发送请求而不是浪费时间等待响应的方法。如果您对如何加快代码速度有任何其他想法,请告诉我:)
解决方案
您正在寻找异步代码。当您使用类似的功能requestSync
时,它意味着它“阻塞”直到它完成。是同步的。当你使用异步的东西时,你通常会使用回调(一个在所需操作完成时调用的函数)或承诺(对回调的抽象)。关于在 SO 上使用这些有很多问题。这篇文章:如何从异步调用返回响应?有一堆与您的问题相关的信息。
推荐阅读
- docker - 与 conda 相关的软件包安装错误
- freeradius - FreeRadius - 在授权后拒绝中进入下一个 Active Directory
- mysql - 我怎样才能更有效、更干净地编写下面的查询?
- python - 轮廓检测人拿着纸片
- javascript - Chart.js getElementsAtEvent 正在为折线图返回空数组
- talend - Talend ESB 的 tMomOutput 中出现“消息无法解析或不是字段”错误
- ios - Raspberry Pi 蓝牙未在 iOS Swift 中检测到
- c++ - 如何防止 Qt 中的 currentCellChanged 信号或跳过“处理”?
- perl - Perl - 在 MIMO Base64 中解码附加到电子邮件的 pdf 会产生一个空的 pdf
- c++ - 是否可以使用默认泛型参数在 C++ 中定义 lambda?