gpt4 book ai didi

javascript - 发布历史;等待回应

转载 作者:行者123 更新时间:2023-11-30 15:53:20 26 4
gpt4 key购买 nike

我需要一些关于 pubnub 历史的帮助。我必须用 JavaScript 检索 channel 的最后一条消息(对象)。所以我做了以下事情:

var vrednosti = {};

var debug = 1;

getHistory = function(){
pubnub.history({
channel: settings.channel,
callback: function(m){
var msg = m[0];
var obj = msg[0];
for (var key in obj){
if (Object.prototype.hasOwnProperty.call(obj, key)){
if(inputs[key].id=='door') inputs[key].checked = vrednosti[key] = obj[key];
else inputs[key].value = vrednosti[key] = obj[key];
if(debug) console.log("history:",vrednosti)
}
}
},
count : 1,
});
}

getHistory();

console.log("recorded history in var vrednosti!", vrednosti)

setTimeout(function(){
if(debug) console.log("recorded history in var vrednosti!", vrednosti)
}, 1000);

所以这会产生以下结果:

recorded history in var vrednosti! Object {  }
history: Object { door: true }
history: Object { door: true, lightLiving: "844" }
history: Object { door: true, lightLiving: "844", lightPorch: "395" }
recorded history in var vrednosti! Object { door: true, lightLiving: "844", lightPorch: "395" }

所以问题是,“getHistory();”之后的代码在我从回调函数得到答案之前执行。有没有办法强制等待回调?

最佳答案

回调是异步的。这意味着您必须在回调函数中移动所有要执行的代码。

var vrednosti = {};

var debug = 1;

getHistory = function(){
pubnub.history({
channel: settings.channel,
callback: function(m){
var msg = m[0];
var obj = msg[0];
for (var key in obj){
if (Object.prototype.hasOwnProperty.call(obj, key)){
if(inputs[key].id=='door') inputs[key].checked = vrednosti[key] = obj[key];
else inputs[key].value = vrednosti[key] = obj[key];
if(debug) console.log("history:",vrednosti)
}
}

console.log("recorded history in var vrednosti!", vrednosti)

setTimeout(function(){
if(debug) console.log("recorded history in var vrednosti!", vrednosti)
}, 1000);
},
count : 1,
});
}

getHistory();

关于javascript - 发布历史;等待回应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38979014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com