Javascript 在Vuex'中模拟延迟;s作用法

Javascript 在Vuex'中模拟延迟;s作用法,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我正在为后端编写Vue应用程序,该应用程序仍在开发中。出于这个原因,我想在行动中加入人为的延迟。例如,如果我提交登录,我希望添加延迟1秒,然后重定向到主应用程序 这是来自组件的提交方法 onSubmit() { this.loading = true; this.$store.dispatch('auth/signIn', this.credentials).then(() => { this.loading = false; }); } 下面是action的sign

我正在为后端编写Vue应用程序,该应用程序仍在开发中。出于这个原因,我想在行动中加入人为的延迟。例如,如果我提交
登录
,我希望添加延迟1秒,然后重定向到主应用程序

这是来自组件的提交方法

onSubmit() {
  this.loading = true;
  this.$store.dispatch('auth/signIn', this.credentials).then(() => {
    this.loading = false;
  });
}
下面是action的signIn方法:

  async signIn({ commit }, credentials) {
    const result = await authService.signIn(credentials);
    await commit(AUTHENTICATE, {
      authenticated: result
    });
  }
如您所见,我在那里调用authService,在该方法中我创建了超时块,但超时块不起作用,服务返回
未定义的

  async signIn(credentials) {
    setTimeout(() => {
      console.log('credentials', credentials);
      return true;
    }, 2000);
  }

您能帮我修复它吗?

您不会从signIn方法返回任何内容,并且setTimeout不会阻止代码执行

如果要进行阻塞超时,我建议创建一个
delay()
方法,如下所示:

function delay(time = 2500) {
  return new Promise((resolve) => {
    setTimeout(resolve, time)
  })
}
默认情况下,它将等待2.5秒


您可以在vanilla JS中看到一个工作示例,这是我用来表示延迟的。检查main.js文件

sleepFunction(time) {
        return new Promise(resolve => setTimeout(resolve, time));
  }