QT / JS: бесконечное l oop при выполнении нескольких запросов HttpRequest - PullRequest
0 голосов
/ 03 мая 2020

Я очень плохо знаком с 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...