我是一个新的反应,但我已经工作了很多年的Vue。当我需要等待一个动作完成时,我现在被困在一个区域。在操作完成后,我必须进行另一个操作调用或在那里执行一些操作。但它不会等待操作完成并开始执行下面的代码。
方法:
export const login = (email, password) => async (dispatch) => {
try {
dispatch({
type: USER_LOGIN_REQUEST,
})
const config = {
headers: {
'Content-Type': 'application/json',
},
}
const { data } = await axios.post(
'/users/login',
{ email, password },
config
)
dispatch({
type: USER_LOGIN_SUCCESS,
payload: data,
})
localStorage.setItem('userInfo', JSON.stringify(data))
} catch (error) {
dispatch({
type: USER_LOGIN_FAIL,
payload:
error.response && error.response.data.message
? error.response.data.message
: error.message,
})
}
}
从其中调度操作的方法:
const redirect = location.search ? location.search.split('=')[1] : '/'
const submitHandler = (e) => {
e.preventDefault()
dispatch(login(email, password))
history.push(redirect)
}
现在,在上面的代码中,重定向并不是在等待调度完成。我试过这个,但它不起作用:
const submitHandler = async (e) => {
e.preventDefault()
await dispatch(login(email, password))
history.push(redirect)
}
让我们假设当下面的
dispatch({
type: USER_LOGIN_SUCCESS,
payload: data,
})
您的ReduxState
具有某种属性,如IsLoggedIn
或IsAuthenticated
。现在,您可以使用相同的属性触发UseEffect
内部的Redirection
,如下所示:-
const {isAuthenticated} = reduxState;
useEffect(()=>{
if(isAuthenticated) history.push(redirect);
},[isAuthenticated])
您的submithandler
可以是以下内容:-
const submitHandler = (e) => {
e.preventDefault()
dispatch(login(email, password))
}
我有一个redux saga设置,工作正常。我的一个分派任务是创建一个新订单,然后一旦创建了订单,我就想用更新后的状态做一些事情。 由于 createOrder 操作触发调用 API 的重订传奇,因此存在延迟,因此在我的函数 do 之前不会更新此 .props.user 命令某些内容被调用。我可以设置一个超时,但这似乎不是一个可持续的想法。 我已经阅读了有关Stack Overflow的类似问题,
当集合中的文档存在或不存在时,我想返回True或False。但它总是返回错误。 我还在学习,谢谢你的帮助。
问题内容: 我看过许多使用这种语法的示例,但是看不到我做错了什么。“ then”函数在ajax调用返回之前正在运行。 我也尝试过使用$ .deferred和其他一些模式无济于事。 有人可以看到我所缺少的吗? 我已经调试,可以看到在ajax调用返回其成功(或错误)数据之前,已完成/然后内部进行的调用。 谢谢你的帮助。 主要电话: 它正在调用以下ajax函数: 谢谢! 验尸: 除了将返回值添加到aja
问题内容: 我的问题: 如何在a上执行一堆线程对象并等待它们全部完成后再继续? 我是ThreadPoolExecutor的新手。因此,此代码是测试以了解其工作方式。现在我什至都不用对象填充,因为我不理解如何在不调用另一个队列的情况下开始队列。无论如何,现在我只是打电话给我,但我认为我仍然缺少一些东西。任何提示都很棒!谢谢。 RunnableObject类: 问题答案: 你应该循环
问题内容: 我不确定如何处理这种情况,因为我是iOS开发和Swift的新手。我正在像这样执行数据获取: 我的loadShows()函数解析从加载到UIWebView的网站中获取的大量数据。问题是我在loadShows函数中有一个等待10秒钟左右的计时器。这允许页面中的javascript在开始解析数据之前完全加载。我的问题是完成处理程序在我的loadShows()之前完成。 我想做的是为“ isC
我正在Eclipse中使用Java运行selenium RC。我遇到的问题是selenium.click命令。我点击的链接加载一个新页面。有时需要5秒,有时需要2-3分钟。每次我看到页面加载时,在我的测试失败后,我立即得到消息“Timed out waiting for action to finish”。 我尝试使用Selenium.IsElementPresent检查正在加载的页面。但是,当我