You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.7 KiB
105 lines
2.7 KiB
document.cookie = "test=demo"; |
|
|
|
// worker获取主线程资源 |
|
var CookieAction = BI.inherit(BI.Workers.WorkerBaseAction, { |
|
addActionHandler: function() { |
|
this.controller.addActionHandler("Cookie", this.getCookie.bind(this)); |
|
}, |
|
|
|
getCookie: function() { |
|
return document.cookie; |
|
} |
|
}); |
|
|
|
// 调用worker计算 |
|
var FibonacciAction = BI.inherit(BI.Workers.WorkerBaseAction, { |
|
addActionHandler: function() {}, |
|
|
|
getResult: function(times) { |
|
return this.controller.requestPromise("Fibonacci", { times: times }) |
|
.then(function(v) { |
|
console.log(v); |
|
}); |
|
} |
|
}); |
|
|
|
// 主线程与worker多次交互 |
|
const HeartBeatCheckAction = BI.inherit(BI.Workers.WorkerBaseAction, { |
|
addActionHandler: function() { |
|
this.controller.addActionHandler("HeartBeatChecked", this.recieveHeartBeatChecked.bind(this)); |
|
}, |
|
|
|
recieveHeartBeatChecked: function (payload) { |
|
console.log("heartbeat: " + payload.time); |
|
}, |
|
|
|
startHeatBeatCheck: function() { |
|
return this.controller.request("HeartBeatCheckStart"); |
|
}, |
|
|
|
stopHeatBeatCheck: function() { |
|
return this.controller.request("HeartBeatCheckStop"); |
|
} |
|
}); |
|
|
|
var WorkerThreadWorker = BI.inherit(BI.Workers.MainThreadWorker, { |
|
initActions: function() { |
|
this.cookieAction = this.createAction(CookieAction); |
|
|
|
this.fibonacciAction = this.createAction(FibonacciAction); |
|
|
|
this.heartBeatCheckAction = this.createAction(HeartBeatCheckAction); |
|
}, |
|
|
|
calculateFibonacci: function(times) { |
|
this.fibonacciAction.getResult(times); |
|
}, |
|
|
|
startHeatBeatCheck: function() { |
|
this.heartBeatCheckAction.startHeatBeatCheck(); |
|
}, |
|
|
|
stopHeatBeatCheck: function() { |
|
this.heartBeatCheckAction.stopHeatBeatCheck(); |
|
} |
|
}); |
|
|
|
var mainThreadWorker = new WorkerThreadWorker({ |
|
workerUrl: "./worker_new/worker.js", |
|
workerName: "demo" |
|
}); |
|
|
|
BI.createWidget({ |
|
type: "bi.vertical", |
|
element: "#wrapper", |
|
vgap: 10, |
|
hgap: 10, |
|
items: [ |
|
{ |
|
type: "bi.button", |
|
text: "点击计算斐波那契数列第40项", |
|
width: 200, |
|
handler: function() { |
|
console.log("click"); |
|
|
|
mainThreadWorker.calculateFibonacci(40); |
|
} |
|
}, |
|
{ |
|
type: "bi.button", |
|
text: "开始心跳", |
|
width: 200, |
|
handler: function() { |
|
mainThreadWorker.startHeatBeatCheck(); |
|
} |
|
}, |
|
{ |
|
type: "bi.button", |
|
text: "停止心跳", |
|
width: 200, |
|
handler: function() { |
|
mainThreadWorker.stopHeatBeatCheck(); |
|
} |
|
} |
|
] |
|
});
|
|
|