ວິທີແກ້ໄຂ: setInterval ບໍ່ສາມາດເຮັດວຽກໄດ້ຕາມປົກກະຕິໃນພື້ນຫລັງຂອງ browser.
ເອກະສານອ້າງອີງ
Workerແມ່ນຫຍັງຄື“ ຜູ້ເຮັດວຽກເວັບ”
"Web Worker" ສະ ໜອງ ວິທີງ່າຍໆ ສຳ ລັບເນື້ອຫາຂອງເວັບທີ່ຈະສາມາດໃຊ້ງານສະຄິບໃນກະທູ້ພື້ນຫລັງ. ກະທູ້ສາມາດປະຕິບັດວຽກງານໂດຍບໍ່ມີການລົບກວນການໂຕ້ຕອບຂອງຜູ້ໃຊ້. ນອກຈາກນັ້ນ, ພວກເຂົາສາມາດປະຕິບັດ I / O ໂດຍໃຊ້ XMLHttpRequest. ເມື່ອສ້າງແລ້ວ, ພະນັກງານສາມາດສົ່ງຂໍ້ຄວາມໄປຫາລະຫັດ JavaScript ທີ່ສ້າງຂື້ນ, ໂດຍການສົ່ງຂໍ້ຄວາມໄປຍັງຜູ້ຈັດການເຫດການທີ່ລະບຸໄວ້ໂດຍລະຫັດ (ແລະໃນທາງກັບກັນ).
ຄຳ ແນະ ນຳ
ໃນລະຫັດຕົວຢ່າງຂ້າງລຸ່ມນີ້, ພວກເຮົາປະຕິບັດການຈັບເວລາທີ່ງ່າຍທີ່ສຸດແລະປ່ອຍໃຫ້ມັນກະຕຸ້ນທຸກໆ 100 ມິນລິລິດ.
var timmer = new Worker(
URL.createObjectURL(
new Blob(
[
"onmessage=function(event){setInterval(function(){postMessage(1);},100)}",
],
{ type: "application/javascript" }
)
)
);
timmer.onmessage = function (event) {
console.log("get message");
};
timmer.postMessage("start");
ການ ນຳ ໃຊ້ມາດຕະຖານ
ໃນຕົວຢ່າງຂ້າງເທິງນີ້, ພວກເຮົາໄດ້ສ້າງທີ່ຢູ່ໂດຍໃຊ້ createObjectURL ເນື່ອງຈາກວ່າລະຫັດທີ່ພວກເຮົາ ຈຳ ເປັນຕ້ອງປະຕິບັດແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ, ວິທີນີ້ຈະມີຄວາມຄ່ອງແຄ້ວຫຼາຍ. ເມື່ອລະຫັດໃນ ໜ້າ ວຽກທີ່ພວກເຮົາ ຈຳ ເປັນຕ້ອງປະຕິບັດແມ່ນສັບສົນຫຼາຍ, ພວກເຮົາສາມາດຂຽນ ໜ້າ ວຽກແຍກຕ່າງຫາກເປັນເອກະລາດ js. ສຳ ລັບລາຍລະອຽດ, ກະລຸນາເບິ່ງລະຫັດຕໍ່ໄປນີ້. ມີ ຄຳ ແນະ ນຳ ທີ່ລະອຽດກວ່າ, ທ່ານສາມາດເບິ່ງເອກະສານອ້າງອີງທີ່ຢູ່ເທິງສຸດຂອງບົດຄວາມ.
var timmer = new Worker('worker.js');