Javascript 在Vuex'中模拟延迟;s作用法
我正在为后端编写Vue应用程序,该应用程序仍在开发中。出于这个原因,我想在行动中加入人为的延迟。例如,如果我提交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
登录
,我希望添加延迟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));
}