Vbscript vb脚本中的递归函数返回值
请参见下面的函数Vbscript vb脚本中的递归函数返回值,vbscript,qtp,hp-uft,Vbscript,Qtp,Hp Uft,请参见下面的函数fnWaitCheckFinalStatus如果在下面的代码中执行了Else部分,则函数fnWaitCheckFinalStatus返回的值为空,因为该函数是递归调用的fnWaitCheckFinalStatus 退出函数应退出其所有状态后,是否有方法获取fnWaitCheckFinalStatus的返回值 我怎样才能做到这一点,这方面有什么建议吗 Function fnWaitCheckFinalStatus(objStatusBar) Dim blnRetValue
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