Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Node.js中为HTTP POST排队?_Javascript_Node.js_Http Post_Mqtt - Fatal编程技术网

Javascript 如何在Node.js中为HTTP POST排队?

Javascript 如何在Node.js中为HTTP POST排队?,javascript,node.js,http-post,mqtt,Javascript,Node.js,Http Post,Mqtt,我正在构建一个简单的物联网项目,其中一个微控制器每秒向MQTT代理发布一个特定主题的传感器数据。我正在使用Node.js构建一个应用程序,该应用程序使用mqtt库订阅此主题,并通过POST请求(使用请求库)使用其API将传感器数据更新到Thingspeak频道 我已经设法建立了一些几乎是工作,但我面临着一个小问题。我无法更新所有传感器数据,因为POST请求需要一些时间,在此期间还发布了其他传感器数据 我正在考虑一种解决方案,可以将需要通过POST请求更新的传感器数据排队 这是我目前的代码: va

我正在构建一个简单的物联网项目,其中一个微控制器每秒向MQTT代理发布一个特定主题的传感器数据。我正在使用Node.js构建一个应用程序,该应用程序使用mqtt库订阅此主题,并通过POST请求(使用请求库)使用其API将传感器数据更新到Thingspeak频道

我已经设法建立了一些几乎是工作,但我面临着一个小问题。我无法更新所有传感器数据,因为POST请求需要一些时间,在此期间还发布了其他传感器数据

我正在考虑一种解决方案,可以将需要通过POST请求更新的传感器数据排队

这是我目前的代码:

var mqtt = require("mqtt")
var request = require("request")

var client  = mqtt.connect('hostname')

client.on('connect', function () {
  client.subscribe('topic')
})

var postReq = function(data) {
  request.post('https://api.thingspeak.com/update', {form: {sensor_data: data}}, function(err,response,body){
    console.log(body)
  }}
}

client.on('message', function (topic, data) {
  // message is Buffer
  postReq(data)
})

在此期间,还会发布其他传感器数据。
为什么不延迟发布其他数据?或者发出一个异步请求以同时执行这两个操作。
request
库是同步的还是异步的?