Вы выполняете очень длинную функцию в потоке GUI. Итак, ваш пользовательский интерфейс зависает, и диспетчер задач Windows считает , что ваше приложение больше не отвечает.
Если вы дождетесь окончания функции, приложение снова будет работать.
Вы должны запустить свою функцию JS в другом потоке, используя WorkerScript .
Например:
ApplicationWindow {
id: window
title: "Stack"
visible: true
width: 600
height: 500
WorkerScript {
id: worker
source: "worker.mjs"
onMessage: {
spinner.running = !messageObject.finished
console.log(messageObject.result)
}
}
Button {
Layout.alignment: Qt.AlignHCenter
text: qsTr("Run function")
onClicked: {
worker.sendMessage({});
}
}
BusyIndicator {
id: spinner
anchors.centerIn: parent
running: false
}
}
// worker.mjs
WorkerScript.onMessage = function(message) {
var teste = 0
WorkerScript.sendMessage({'finished': false, 'result': teste});
var arrayTeste = []
for(var i=0; i< 10000; i++) {
teste +=i
arrayTeste.push(i)
for(var j=0; j<10000;j++) {
teste +=j
arrayTeste.push(j)
for(var z=0; z<10000; z++) {
teste +=z
arrayTeste.push(z)
}
}
}
WorkerScript.sendMessage({'finished': true, 'result': teste});
}