Я очень плохо знаком с QT и программированием в целом. Я пытаюсь создать частное приложение для своей системы домашней автоматизации.
Я создал HTTP-клиент REST для получения данных из API. Он прекрасно работает для одного запроса, но когда я дважды использую функцию клиента на одной и той же странице, он продолжает бесконечно пересчитывать обе функции…
Вот мой «клиентский» код:
QtObject {
id: _
readonly property string apiUrl: "XXX"
readonly property string apiKey: "XXX"
property string jsonData: "null"
property string value: "null"
//property string collectdate: "null"
function post(method, cmdid) {
HttpRequest.post(apiUrl)
.timeout(maxRequestTimeout)
.set('Content-Type', 'application/json')
.send({
"jsonrpc": "2.0",
"method": method,
"params": {"id":[cmdid],"apikey": apiKey}
})
.end(function(err, res) {
if(res.ok) {
jsonData = JSON.stringify(res.body.result)
var keys = Object.keys(res.body.result)
//console.log("keys= " + keys)
var keyid = keys [Object.keys(keys)[0]]
//console.log("keyid= " + keyid)
value = JSON.stringify(res.body.result[keyid].value)
//console.log("valeur= " + value);
var collectdate = JSON.stringify(res.body.result[keyid].collectDate)
//console.log("date de collecte= " + collectdate);
//return value
}
else {
console.log(err.message)
console.log(err.resonse)
}
}
)
return value
}
}
function execCmd(cmdid) {
console.log(_.post("methodtype", cmdid))
return _.post("methodtype", cmdid)
}
}
И код моей страницы:
API{
id: api
}
AppText {
text: "Salon : " + api.execCmd(#CMDID_1#) + "°C"
anchors.centerIn: parent
}
AppText {
text: "Bureau : " + api.execCmd(#CMDID_2#) + "°C"
}
Так что, если у меня есть только один AppText (один CMD_ID), он работает нормально. Но с двумя CMD_ID у меня бесконечный l oop как на консоли, так и на дисплее.
Я также пробовал с Promise, тот же результат…
У меня такое ощущение, что мне не хватает очень Простая концепция программирования ...
Большое спасибо за вашу помощь. Pierre