HarmonyOS鸿蒙Next中应用接续数据迁移,基础数据迁移源端示例中save()调用未使用await,与文档说明矛盾

HarmonyOS鸿蒙Next中应用接续数据迁移,基础数据迁移源端示例中save()调用未使用await,与文档说明矛盾 【问题描述】应用接续数据迁移-跨端迁移-自由流转 - 华为HarmonyOS开发者基础数据迁移文档说明要求’应采用await的方式等待save()接口执行完毕’,但示例代码中save()使用.then().catch()链式调用,未使用await
cke_2957.png
【优化建议】将源端示例代码中的save()调用修改为await方式,与文档说明保持一致,并添加try-catch块处理异常。

try {
    const result = await this.d_object.save(wantParam.targetDevice as string);
    hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in saving. SessionId: ${result.sessionId}, version:${result.version}, deviceId:${result.deviceId}`);
    // 根据业务决定是否继续迁移
} catch (err) {
    hilog.error(DOMAIN_NUMBER, TAG, 'Failed to save. Error: ', JSON.stringify(err) ?? '');
    // 根据业务决定是否继续迁移
}

更多关于HarmonyOS鸿蒙Next中应用接续数据迁移,基础数据迁移源端示例中save()调用未使用await,与文档说明矛盾的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

尊敬的开发者,您好!文档已优化,参考如下官方链接:https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-continue-data

更多关于HarmonyOS鸿蒙Next中应用接续数据迁移,基础数据迁移源端示例中save()调用未使用await,与文档说明矛盾的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


尊敬的开发者,您好!感谢您的反馈,问题正在加速处理中,还请关注后续版本,感谢您的理解与支持。

这个属于“说明与示例不一致”。如果文档强调要等待 save() 完成再进入下一步迁移链路,用 await + try/catch 的写法会更直观,也和文档文字一致(你贴的示例就很好)。

另外补充一点:无论用 await 还是 then/catch,本质都是要保证 save() resolve 后再继续后续迁移/状态上报,避免并发导致 session/version 等信息还没拿到就开始下一步。建议文档统一成一种写法,减少读者困惑。

在HarmonyOS Next中,save()方法若返回void(同步操作),则无需await;文档中要求await的场景针对异步save()(返回Promise<void>)。示例与文档不矛盾,仅因接口版本或实现不同。请核实接口定义。

您指出的问题确实存在:文档中强调应使用 await 等待 save() 完成,但源端示例代码采用了 .then().catch(),两者不一致。您给出的优化代码使用 await 并包裹 try-catch,既与文档说明一致,又保证了异常处理的语义,也更符合现代异步编程的推荐风格。

回到顶部