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