﻿/** 
 * @Author       : xxx.xx
 * @Date         : 2024-01-12 14:00:25
 * @LastEditors  : xx.xxx
 * @LastEditTime : 2024-01-12 18:37:35
 * @FilePath     : \DataDemo\JavaScripts\DataScript.ts
 * @Description  : 修改描述
 */

@Component
export default class DataScript extends Script {

    /** 当脚本被实例后，会在第一帧更新前调用此函数 */

    protected onStart(): void {
        this.setData();

        this.getData();
    }
    private setData() {
        if (SystemUtil.isServer()) {
            DataStorage.asyncSetData("dataKey", "hello world")
        }
    }

    private getData() {
        if (SystemUtil.isServer()) {
            DataStorage.asyncGetData("dataKey").then((result) => {
                //需要判断数据储存获取情况为Success，并且保险起见，判断一下获取的data不为null
                if (result.code === DataStorageResultCode.Success && result.data != null) {
                    //此时可确保result.data正常获取
                    let data = result.data
                    console.log(data);

                }
                //若获取情况为请求超时或未知错误，可以直接再次发送拿数据的请求
                else if (result.code === DataStorageResultCode.TimeOut || result.code === DataStorageResultCode.Failure) {
                    this.getData()
                }
                //若获取情况为请求频率过高，需要等待一段时间再次发送拿数据请求
                else if (result.code === DataStorageResultCode.RequestTooFrequent) {
                    setTimeout(() => {
                        this.getData()
                    }, 5000);
                }
                else {
                    console.log("获取错误请检查代码逻辑，错误码" + result.code);

                }
            })
        }
    }


}