请参见下面的函数fnWaitCheckFinalStatus
,如果在下面的代码中执行Else部分,则函数fnWaitCheckFinalStatus
返回的值为空白,因为函数fnWaitCheckFinalStatus
递归地被称为
是否有办法得到fnWaitCheckFinalStatus
的返回值退出函数后,函数应该退出所有的状态
我怎样才能使它成为可能,关于这一点有什么建议吗
Function fnWaitCheckFinalStatus(objStatusBar)
Dim blnRetValue : blnRetValue = True
Dim i : i=0
If objStatusBar.Exist Then
strValue=ObjStatusBar.GetROProperty("text")
Do
wait 10
strValue=ObjStatusBar.GetROProperty("text")
Loop While strValue = "Task Started"
End If
strValue1=ObjStatusBar.GetROProperty("text")
If strValue1="Task executed successfully" Then
blnRetValue1=True
fnWaitCheckFinalStatus = blnRetValue1
Exit Function
ElseIf strValue1="Task execution failed" Then
blnRetValue1=False
fnWaitCheckFinalStatus = blnRetValue1
Exit Function
Else
Call fnWaitCheckFinalStatus(objStatusBar)
End If
End Function
如果您从递归返回,请考虑"传递"函数结果,就像下面的代码一样(注意带有!!评论):
Function fnWaitCheckFinalStatus(objStatusBar)
Dim i : i=0
If objStatusBar.Exist Then
strValue=ObjStatusBar.GetROProperty("text")
Do
wait 10
strValue=ObjStatusBar.GetROProperty("text")
Loop While strValue = "Task Started"
End If
strValue1=ObjStatusBar.GetROProperty("text")
If strValue1="Task executed successfully" Then
fnWaitCheckFinalStatus = true
ElseIf strValue1="Task execution failed" Then
fnWaitCheckFinalStatus = false
Else
fnWaitCheckFinalStatus=fnWaitCheckFinalStatus(objStatusBar) ' !!!
End If
End Function
同时,我也消除了结果缓冲区变量。你不需要它,所以你可以刮掉它。
同样,在这种情况下,为了使代码更简单(一个入口点,一个出口点),我避免了exit function
,所以我也消除了它。