HarmonyOS 鸿蒙Next 如何添加延时的功能

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何添加延时的功能 主要代码如下

@Entry
@Component
struct LoadingPage{
  @State message: string = '少女祈祷中......'

  private timeID: number = 0 //计时器id

  aboutToAppear(){
    this.timeID = setInterval(()=>{
      
    }, 3000)

    axios({//传递到服务器请求用户登录和相关数据
      method:"get",
      url:'47.108.250.206:8080/GetUserData',
      params:{
        userName:userName
      }
    }).then(res=>{
      if(res.data){
        router.pushUrl({
          url:'pages/MainPage',
          params:{
            'userName': userName,
            'usrID': res.data.userID,
            'usrFarmList': res.data.List
          }
        })
      }else{//登录失败
        router.back({
          url:'pages/index',
          params:{}
        })
      }
    })
  }

  build(){
    Row(){
      //略
    }
    .height('100%')
  }
}

我在该界面的aboutToAppear内执行了一定的操作后,边跳转到下一个界面。但似乎是因为这些操作完成地太快,导致这个界面并没有如预期地显示出来。 我希望能够添加一个延时功能,使得操作完成后这个界面也能显示一会以后再跳转到下一个界面。

还有一个问题是,怎样获取到系统时间,官方文档里似乎很难找到相关的解答。 以上,希望能够得到解答


更多关于HarmonyOS 鸿蒙Next 如何添加延时的功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

// 添加延时操作 setTimeout(() => { router.pushUrl({ url:‘pages/MainPage’, params:{ ‘userName’: userName, ‘usrID’: res.data.userID, ‘usrFarmList’: res.data.List } }) }, 2000) // 这里设置延时2秒后跳转

let now = new Date(); let timestamp = now.getTime(); // 获取当前时间戳 // 格式化输出年月日-时分秒 let year = now.getFullYear(); let month = (“0” + (now.getMonth() + 1)).slice(-2); // 月份需要+1,因为JavaScript中月份是从0开始的 let day = (“0” + now.getDate()).slice(-2); let hours = (“0” + now.getHours()).slice(-2); let minutes = (“0” + now.getMinutes()).slice(-2); let seconds = (“0” + now.getSeconds()).slice(-2); let formattedDateTime = ${year}-${month}-${day} ${hours}:${minutes}:${seconds}; console.info(‘formattedDateTime’, formattedDateTime); // 输出类似 “2024-04-07 09:33:03”

更多关于HarmonyOS 鸿蒙Next 如何添加延时的功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以利用一下队列,

在HarmonyOS(鸿蒙)中,实现延时功能可以通过使用TaskDispatcherTimer来实现。以下是两种方法的简要说明:

  1. 使用TaskDispatcher:
import taskpool from '@ohos.taskpool';

async function delay(ms: number) {
    await new Promise<void>((resolve) => {
        setTimeout(resolve, ms);
    });
}

async function main() {
    console.log('Start');
    await delay(1000); // 延时1秒
    console.log('End');
}

taskpool.execute(main);
  1. 使用Timer:
import timer from '@ohos.timer';

function delay(ms: number) {
    return new Promise<void>((resolve) => {
        timer.setTimeout(() => {
            resolve();
        }, ms);
    });
}

async function main() {
    console.log('Start');
    await delay(1000); // 延时1秒
    console.log('End');
}

main();

这两种方法都可以在鸿蒙系统中实现延时功能,具体选择取决于应用场景和需求。

在HarmonyOS(鸿蒙Next)中,可以通过使用TaskDispatcherdelay方法来实现延时功能。首先,获取TaskDispatcher实例,然后调用delay方法并传入延时时间(以毫秒为单位)和要执行的任务。例如:

TaskDispatcher dispatcher = TaskDispatcher.getGlobalTaskDispatcher(TaskPriority.DEFAULT);
dispatcher.delay(() -> {
    // 延时后执行的代码
}, 1000); // 延时1秒

这种方式适用于需要在指定时间后执行任务的场景。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!