1
我有一系列从解码折线返回的经度/纬度对。推迟执行node.js中的异步消息传递函数
使用forEach
我提取每个纬度/经度对和使用pubnub.publish()
,发送这个数据到一个通道。
pubnub.publish()
是一个异步函数,我需要在每个步骤通过forEach
循环来延迟发布消息。
我已经浏览了很多关于setTimeout立即执行的答案,并尝试了下面的不同版本,包括不在封闭中封装setTimeout
,但无法延迟发布 - 只是尽快将它们全部发送它可以。
任何人都可以指出任何明显的错误?
decodedPolyline.forEach(function (rawPoints) {
var value = {
lat: rawPoints[0],
lng: rawPoints[1]
};
var sendmsg = function() {
pubnub.publish({
channel: id,
message: value,
callback: function (confirmation) {
console.log(confirmation);
},
error: function (puberror) {
console.log('error: ' + puberror);
}
});
};
(function() {
setTimeout(sendmsg, 2000);
})();
normalised.push(value);
});
您是否试图在每次调用'pubnub.publish'之间获得2秒的延迟?现在,您的代码将来会将所有内容排队等待2秒钟,所以它们都会在2秒后大致同时执行。 – nderscore
@aframe问题看起来像一个一致的消息队列的经典实现。 –
@nderscore - 我试图每两秒发布一次,是的。被接受的答案完成了这项工作。 – aframe