4254关注13471浏览
在主线程中iOS小程序真机中可以从子线拿到数据,但是在android小程序真机中却没有从子线程中收到要处理的
数据。
添加后,目录结构如下:
(1)在主线程的代码 app.js 中初始化 Worker
// 创建新进程
var worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径
// 向子进程发送数据
worker.postMessage({
msg: value// value是外界传过来的城市名数组,数组元素是对象如:{cityName: "", stationName: "贵阳"}
})
// 从子线程接收处理结果并展示
worker.onMessage(function (res) {
console.log(res)
that.globalData.pySeg = res.msg;
})
(2)
在 workers/request/index.js
编写 Worker 响应代码
ar utils = require('/utils');
var pySegValue = [];
// 在 Worker 线程执行上下文会全局暴露一个 `worker` 对象,直接调用 worker.onMeesage/postMessage 即可
worker.onMessage(function (res) {
if(pySegValue.length <=0){
pySegValue = utils.pySegSort(res.msg);// 调用城市排序算法
//向主线程发送数据
worker.postMessage({
msg: pySegValue
})
}
});
(3)
在 workers/request/
utils.js
编写 Worker 响应代码
// 城市排序
function pySegSort(arr) {
if (!String.prototype.localeCompare)
return null;
var letters = "ABCDEFGHJKLMNOPQRSTWXYZ".split('');
console.log(letters);
var zh = "阿八嚓哒妸发旮哈讥咔垃麻拏噢妑七呥扨它穵夕丫帀".split('');
console.log(zh);
var segs = [];
var curr;
letters.forEach(function (item, i) {
console.log(i);
curr = { isUp: false, i: i, letter: item, data: [] };
arr.forEach(function (item2) {
if ((!zh[i] || zh[i].localeCompare(item2.stationName, "zh") <= 0) && item2.stationName.localeCompare(zh[i + 1], "zh") == -1) {
curr.data.push(item2);
}
});
if (curr.data.length) {
segs.push(curr);
curr.data.s
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>