我们如果遇到[ miniprogram/app.json 文件内容错误] miniprogram/app.json: [“workers”] 字段需为 目录(env: Windows,mp,1.06.2209190; lib: 2.21.4)这样的错误,那么一定是我们在app.json中定义了这个字段。
一、解决错误
1.方法一:
找到这个字段直接删除即可。
2.方法二:
在你的项目目录中补充一个对应的workers目录即可。
上面两种方法只不过是令小程序调试的时候不报错,但实际我们要正利用好worker那就要复杂一些。继续看下面的介绍。
二、关于worker及使用
workers究竟是来干什么的,其实微信的文档中已经说明了,这就是我们在其他编程语言中遇到的线程。
参考这里
要真正使用worker必须满足下面的两步:
1、为worker目录下添加js文件
在其目录下添加完成js文件并编写一个可供调用的函数,提供给worker调用。这里我们命名为index.js(名称无所谓,关键在后面的页面js文件中要如实的按照路径和名称填写在createworker构造函数中)
// index.js
//这里的onMessage函数是供声明了worker实例的页面js调用的
worker.onMessage(function(res){
console.log('worker inner thread is running')
console.log(res)
let sum = times(res.x,res.y); //这里调用了下面的times函数
worker.postMessage({
sum : sum
})
});
//声明被调用的函数
function times(x,y){
return x*y;
}
2、从页面js中调用
在需要调用worker线程的页面的函数中添加worker实例,并调用worker目录下已有的js文件的函数
这里就是某个页面的js的调用,我们首先在onLoad里面实例化一个woker,并在createWorker构造函数中给予worker文件夹的绝对路径,一定是绝对路径,建议放在minprogram目录下好。文章来源:https://www.toymoban.com/news/detail-520402.html
onLoad: function (options) {
const worker = wx.createWorker('/workers/index.js');
worker.postMessage({ //与前面worker目录下index.js下声明的函数名对应
x : 10,
y : 2
});
worker.onMessage(function(res){ //与前面worker目录下index.js下声明的函数名对应
console.log('print from worker thread result.')
console.log(res)
});
},
输出结果为:
文章来源地址https://www.toymoban.com/news/detail-520402.html
到了这里,关于解决微信小程序“app.json: [“workers“] 字段需为 目录“错误及worker的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!