我已经编写了一个小批量测试脚本:
start
errorcheck: "test"
end
main
end
输出:
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// Get data from db
dispatch_async(dispatch_get_main_queue()) {
// update the cell (Make all UI operations here)
}
}
我想调用函数errorcheck然后转到exit而不输入" main"部分。但剧本又回到了主要的"部分。怎么了?
答案 0 :(得分:1)
您不能使用子功能执行此操作,它将始终返回。
结束子功能的常用语法是goto :eof
,它隐含在脚本的末尾(在echo end
之后)。即使exit 0
也会返回调用代码。
您需要检查某些条件,然后在主代码中的exit
之后结束您的程序(例如,使用goto :eof
或call
)以避免第二个“结束“输出。
例如:
echo start
call:errorcheck "test"
if errorlevel 1 exit /b 1
echo main
goto exit
:errorcheck
echo errorcheck: %1
if <some error condition> exit 1
exit 0
:exit
echo end