Esperar

SE APLICA A: todos los niveles de API Management

La directiva wait ejecuta sus directivas secundarias inmediatas en paralelo y espera a que se completen todas o una de ellas para finalizar. La directiva wait puede tener como directivas secundarias inmediatas una o varias de las siguientes: send-request, cache-lookup-value y choose.

Nota:

Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.

Instrucción de la directiva

<wait for="all | any">
  <!--Wait policy can contain send-request, cache-lookup-value,
        and choose policies as child elements -->
</wait>

Atributos

Atributo Descripción Necesario Valor predeterminado
para Determina si la directiva wait espera a que se hayan completado todas las directivas secundarias inmediatas o solo una. Los valores permitidos son:

- all: espera a que se hayan completado todas las directivas secundarias inmediatas.
- any: espera a que se haya completado cualquier directiva secundaria inmediata. En cuanto se completa la primera, la directiva wait también se completa y finaliza la ejecución de cualquier otra directiva secundaria inmediata.

Se permiten expresiones de directiva.
No all

Elementos

Solo puede contener como elementos secundarios a las directivas send-request, cache-lookup-value y choose.

Uso

Ejemplo

En el ejemplo siguiente hay dos directivas choose que son directivas secundarias inmediatas de la directiva wait. Cada una de estas directivas choose se ejecuta en paralelo. Cada directiva choose intenta recuperar un valor almacenado en memoria caché. Si se produce un error de memoria caché, se llama a un servicio back-end para que proporcione el valor. En este ejemplo la directiva wait no se completa hasta que lo han hecho todas sus directivas secundarias inmediatas, ya que el atributo for está establecido en all. Las variables de contexto (execute-branch-one, value-one, execute-branch-two y value-two) quedan fuera del ámbito de esta directiva de ejemplo.

<wait for="all">
  <choose>
    <when condition="@((bool)context.Variables["execute-branch-one="])">
      <cache-lookup-value key="key-one" variable-name="value-one" />
      <choose>
        <when condition="@(!context.Variables.ContainsKey("value-one="))">
          <send-request mode="new" response-variable-name="value-one">
            <set-url>https://backend-one</set-url>
            <set-method>GET</set-method>
          </send-request>
        </when>
      </choose>
    </when>
  </choose>
  <choose>
    <when condition="@((bool)context.Variables["execute-branch-two="])">
      <cache-lookup-value key="key-two" variable-name="value-two" />
      <choose>
        <when condition="@(!context.Variables.ContainsKey("value-two="))">
          <send-request mode="new" response-variable-name="value-two">
            <set-url>https://backend-two</set-url>
            <set-method>GET</set-method>
          </send-request>
        </when>
      </choose>
    </when>
  </choose>
</wait>

Para más información sobre el trabajo con directivas, vea: