在主线程中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

展开全部
收起
0回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部