- 在项目
public
目录下创建文件worker.js
内容为:
function startTimer(data = {}) {
setInterval(() => {
postMessage(data.message || 'interval');
}, data.time || 1000);
}
onmessage = function (event) {
startTimer(event.data);
};
- 在需要使用的地方
data() {
return {
worker: null,
}
},
beforeDestroy() {
this.worker && this.worker.terminate()
},
methods: {
loop(cb) {
const worker = new Worker(`${env.publicPath}/worker.js`)
this.worker = worker
worker.postMessage({ time: 1000, message: 'time' })
worker.onmessage = function(event) {
if (event.data === 'time') {
cb()
}
}
},
test(){
this.loop(() => {
console.log('now', new Date().getTime())
}
}
}