Является ли действие, вызывающее действие, в действии, считающемся завершенным, только когда вызванное действие завершается и достигает конечного узла действия? - PullRequest
1 голос
/ 08 июня 2019

Предполагая, что у нас есть два вида деятельности; action_1 и action_2 с действием (action_A), присутствующим в action_1, которое вызывает action_2, считается ли action_A выполненным / завершенным только тогда, когда вызванная action_2 завершается и достигает конечного узла своей активности? Или считается, что действие_А выполнено, как только он начинает действие_2, и оба действия выполняются независимо (действие_1 продолжает выполняться, пока выполняется действие_2)?

1 Ответ

2 голосов
/ 08 июня 2019

Если я хорошо понимаю, что ваше действие является действием вызова

Из формального / 17-12-05 § 16.3.3.1 стр. 451: CallAction может привести к синхронному илиасинхронный вызов поведения, либо напрямую, либо посредством вызова операции.

  • Если вызов является синхронным (isSynchronous = true), то выполнение действия не завершается до выполнения вызванногоПоведение завершается, обычно или иначе.(Если выполнение Поведения не завершается нормально, а вместо этого вызывает исключение, то это исключение распространяется из CallAction (см. Подпункты 15.5.3 и 16.13 об исключениях и способах их обработки).

  • Если вызов асинхронный (isSynchronous = false), то выполнение Action завершается, как только было вызвано поведение. Когда асинхронный вызов завершен, выполнение Behavior, содержащего CallAction, продолжается независимо.и одновременно с выполнением вызванного Поведения, включая обработку любых исключительных условий, возникающих во время исполнения Поведения.

action_A считается выполненным / завершенным, только когдавызванная активность_2 завершается и достигает своего конечного узла действия?

да, если вызов является синхронным (больше в случае исключения)

Или считается, что действие_А выполнено после его запускаактивность_2 и обе операции выполняются независимоntly (активность_1 продолжает работать, а активность_2 также выполняется)

, в этом случае вызов асинхронный, поэтому выполнение действия завершается, как только действие_2 было вызвано без ожидания окончания действия_2

...