JS之web workers
h5规范提供了js分线程的实现,取名:web workers
相关API
1.worker:构造函数,加载分线程执行的js文件
2.worker.prototype.onmessage 用于接受另一个线程的回调函数
3.worker.prototype.postmessage 向另一个线程的发送消息
不足:
1.worker内代码不能操作dom(更新UI)
2.不能跨域加载JS
3.不是每一个浏览器都支持这个新的特性
4.慢

JS实现斐波那契数列
function fibonaqie(n){ return n<= 2 ? 1 :fibonaqie(n-1) +fibonaqie(n-2);
}
fibonaqie(10);
递归调用比较慢,一直占用着主线程,页面会被卡住
work.js(分线程)
// 分线程中的全局对象不再是window,不能更新页面
function fibonaqie(n){ return n<= 2 ? 1 :fibonaqie(n-1) +fibonaqie(n-2);
}
var onmessage = function (event) {
var number = event.data
console.log('分线程接受到主线程发送的数据:'+ number)
var result = fibonaqie(number)
postMessage(result)
console.log('分线程向主线程返回数据:' + result)
alert(result) // 不能调用,因为alert是主线程window的方法,console是浏览器的方法,不是window的方法
}
script中的代码:
var number = 10
// 创建一个Worker对象
var worker = new Worker('worker.js')
// 绑定接收消息的监听
worker.onmessage = function (event) {
console.log('主线程接收分线程返回的数据:' + event.data)
alert (event.data)
}
// 向分线程发送消息
worker.postMessage(number)
console.log('主线程向分线程发送数据:' + number)
console.log(this) // window
浙公网安备 33010602011771号