HarmonyOS 鸿蒙Next data.slice 卡住后面不执行

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next data.slice 卡住后面不执行

你好,在处理Buffer时,使用slice处理,进程卡住后需不执行。 代码如下:

console.debug(’-----completeDataBuffer------1’, JSON.stringify(data), data[0]) // 正常输出

let completeDataBuffer = data.slice(5, 6)

console.debug(’-----completeDataBuffer------2’, JSON.stringify(completeDataBuffer)) // 没有执行


更多关于HarmonyOS 鸿蒙Next data.slice 卡住后面不执行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
可以使用已经适配鸿蒙的三方库ohos_polyfill来引入相应的buffer,推断是缺乏对应的js相关的buffer所以导致报错。

ohos_polyfill鸿蒙版开源项目链接:https://gitee.com/openharmony-sig/ohos_polyfill

在工程中引入好该仓库后,可以在鸿蒙工程中新建对应的js文件,如Test.js,代码如下:

import { buffer } from '[@ohos](/user/ohos)/node-polyfill';
export function test() {
    const message = [103, 0, 0, 0, 1, 36, 91, 191]
    const dataBuffer = buffer.Buffer.from(message)
    console.debug('Channel: Respond from server ==> Package length = ', dataBuffer.length, dataBuffer)
    console.debug('onData -->', dataBuffer)
    console.debug('onData -->', JSON.stringify(dataBuffer))
    let type = parseInt(dataBuffer[0])
    console.debug('<===================== Message Type =====================>', type)
    // 获取完整的消息
    console.debug('-----completeDataBuffer------1', JSON.stringify(dataBuffer), dataBuffer[0])
    let completeDataBuffer = dataBuffer.slice(5, 6); // 这里报错
    console.debug('-----completeDataBuffer------2', JSON.stringify(completeDataBuffer))
    console.debug('-----completeDataBuffer------3', JSON.stringify(dataBuffer[0]))
}

然后,可在ArkTS原生代码中进行调用,示例代码如下:

import { promptAction } from '@kit.ArkUI';
import { test } from './Test';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  [@State](/user/State) message: string = 'Hello World';
  get() {
    test()
  }
  build() {
    Column() {
      Button('点击').onClick(() => {
        this.get()
        promptAction.showToast({ message: `方法已执行` })
      })
    }
    .width("100%")
    .height("100%")
    .justifyContent(FlexAlign.Center)
  }
}

更多关于HarmonyOS 鸿蒙Next data.slice 卡住后面不执行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,遇到data.slice卡住不执行的问题,通常与数据处理或内存管理有关。以下是一些可能的解决方案:

  1. 检查Slice数据大小: 确保data.slice的数据量没有超出系统或应用的处理能力。大数据量可能导致处理缓慢或卡住。

  2. 内存使用情况: 检查应用内存使用情况,确保没有内存泄漏或内存不足的情况。内存不足可能导致数据处理过程中断。

  3. Slice数据完整性: 验证data.slice的数据完整性,确保数据在传输或存储过程中没有损坏。损坏的数据可能导致处理失败。

  4. 任务优先级: 检查是否有其他高优先级任务占用系统资源,导致data.slice处理被延迟或卡住。

  5. 系统日志: 查看系统日志,查找与data.slice处理相关的错误或警告信息,这些信息可能提供问题的直接线索。

  6. API调用: 确保data.slice相关的API调用正确无误,遵循鸿蒙系统的API使用规范。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在联系客服时,提供详细的错误描述、系统日志和相关代码片段,以便快速定位问题。

回到顶部