@tarojs/taro
Version:
Taro framework
84 lines (81 loc) • 2.88 kB
TypeScript
import Taro from '../../index'
declare module '../../index' {
namespace Worker {
type OnMessageCallback = (
result: OnMessageCallbackResult,
) => void
interface OnMessageCallbackResult {
/** 主线程/Worker 线程向当前线程发送的消息 */
message: TaroGeneral.IAnyObject
}
}
interface Worker {
/** 监听主线程/Worker 线程向当前线程发送的消息的事件。
* @supported weapp
* @see https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.onMessage.html
*/
onMessage(
/** 主线程/Worker 线程向当前线程发送的消息的事件的回调函数 */
callback: Worker.OnMessageCallback,
): void
/** 监听 worker 线程被系统回收事件(当 iOS 系统资源紧张时,worker 线程存在被系统回收的可能,开发者可监听此事件并重新创建一个 worker)
* @supported weapp
* @see https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.onProcessKilled.html
*/
onProcessKilled(
/** worker 线程被系统回收事件的回调函数 */
callback: Worker.OnMessageCallback,
): void
/** 向主线程/Worker 线程发送的消息。
* @supported weapp
* @example
* worker 线程中
*
* ```tsx
* worker.postMessage({
* msg: 'hello from worker'
* })
* ```
*
* 主线程中
*
* ```tsx
* const worker = Taro.createWorker('workers/request/index.js')
* worker.postMessage({
* msg: 'hello from main'
* })
* ```
* @see https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.postMessage.html
*/
postMessage(
/** 需要发送的消息,必须是一个可序列化的 JavaScript key-value 形式的对象。 */
message: TaroGeneral.IAnyObject,
): void
/** 结束当前 Worker 线程。仅限在主线程 worker 对象上调用。
* @supported weapp
* @see https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.terminate.html
*/
terminate(): void
}
interface TaroStatic {
/** 创建一个 Worker 线程。目前限制最多只能创建一个 Worker,创建下一个 Worker 前请先调用 [Worker.terminate](/docs/apis/worker/#terminate)
* @supported weapp
* @example
* ```tsx
* const worker = Taro.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路径,绝对路径
* worker.onMessage(function (res) {
* console.log(res)
* })
* worker.postMessage({
* msg: 'hello worker'
* })
* worker.terminate()
* ```
* @see https://developers.weixin.qq.com/miniprogram/dev/api/worker/wx.createWorker.html
*/
createWorker(
/** worker 入口文件的**绝对路径** */
scriptPath: string,
): Worker
}
}