Compartir por


Concurrent Función

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos

Avalía varias fórmulas de xeito simultáneo entre si.

Descripción

A Concurrent función permite que varias fórmulas especificadas dentro da mesma propiedade sexan avaliadas ao mesmo tempo se teñen chamadas de conector ou Dataverse. Normalmente, as fórmulas múltiples avalíanse encadeándoas co operador ; (punto e coma), que avalía cada fórmula secuencialmente. Coa Concurrent función, a aplicación avaliará todas as fórmulas dentro dunha propiedade simultaneamente, mesmo despois de usar o operador ; . Esta simultaneidade axuda aos usuarios a esperar menos polo mesmo resultado.

Na propiedade OnStart da túa aplicación, usa Concurrent para mellorar o rendemento cando a aplicación carga datos. Cando as chamadas de datos non comezan ata que rematan as chamadas anteriores, a aplicación deberá agardar a suma de todos os tempos de solicitude. Se as chamadas de datos comezan ao mesmo tempo, a aplicación só debe agardar o tempo de solicitude máis longo. Os navegadores web con frecuencia melloran o rendemento realizando chamadas de rede ao mesmo tempo.

Non se pode predicir a orde na que as fórmulas dentro da Concurrent función comezan e rematan a avaliación. As fórmulas dentro da Concurrent función non deben conter dependencias doutras fórmulas dentro da mesma Concurrent función e Power Apps mostra un erro se o intenta. Desde dentro, podes tomar con seguridade dependencias de fórmulas fóra da Concurrent función porque se completan antes de que comece a Concurrent función. As fórmulas despois da Concurrent función poden tomar dependencias con seguridade das fórmulas dentro: completaranse todas antes de que a Concurrent función remate e pasen á seguinte fórmula dunha cadea (se usa o operador ; ). Estea atento ás dependencias sutís dos pedidos se está chamando a funcións ou métodos de servizo que teñen efectos secundarios.

Pode encadear fórmulas xunto co operador ; dentro dun argumento a Concurrent. Por exemplo, Concurrent( Set ( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) avalíaSet( a, 1 ); Set( b, a+1 ) simultaneamente con Set( x, 2 ); Conxunto( y, x+2 ). Neste caso, as dependencias das fórmulas están ben: a establecerase antes de b e x establecerase antes de y.

Dependendo do dispositivo ou navegador no que estea executando a aplicación, só se poderá avaliar simultaneamente un bo número de fórmulas. Concurrent Usa as capacidades dispoñibles e non rematará ata que todas as fórmulas sexan avaliadas.

Se activa a xestión de erros a nivel de fórmula (en configuración avanzada), o primeiro erro atopado na orde dos argumentos devolverase de Concurrent; en caso contrario, devolverase o baleiro . Se todas as fórmulas teñen éxito, devolverase verdadeiro. Se unha fórmula falla, o resto desa fórmula detense, pero as outras fórmulas seguen avaliando.

Só se pode usar Concurrent en fórmulas de comportamento.

Sintaxe

Concurrent( Formula1, Formula2 [, ...] )

  • Fórmulas – Obrigatorio. Fórmulas para avaliar simultaneamente. Debe fornecer polo menos dúas fórmulas.

Exemplos

Cargar datos máis rapidamente

  1. Cree unha aplicación e engada catro orixes de datos de Microsoft Dataverse, SQL Server ou SharePoint.

    Este exemplo usa catro táboas de Base de datos de mostras de Adventure Works en SQL Azure. Despois de crear a base de datos, conéctese a ela desde Power Apps usando o nome do servidor completamente cualificado (por exemplo, srvname.database.windows.net):

    Conectarse cunha base de datos de Adventure Works en Azure.

  2. Engada un control de Button e axuste a súa propiedade OnSelect nesta fórmula:

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. En Microsoft Edge ou Google Chrome, active as ferramentas de desenvolvedores para supervisar o tráfico da rede mentres a aplicación está en funcionamento.

  4. (opcional) Active a aceleración da rede para esaxerar os efectos desta comparación.

  5. Mentres manteña a tecla Alt premida, seleccione o botón e vexa o tráfico da rede.

    As ferramentas amosan catro solicitudes realizadas en serie, semellantes a este exemplo. Os tempos reais foron eliminados xa que varían moito. A gráfica mostra que cada chamada comeza unha vez rematada a última:

    Gráfico horario de catro solicitudes de rede, cada unha comezando despois de rematar a última, cubrindo todo o período de tempo.

  6. Garde, peche e abra de novo a aplicación.

    Power Apps almacena datos na caché, polo que seleccionar o botón de novo non necesariamente provocará catro novas solicitudes. Cada vez que queira probar o rendemento, peche e volva abrir a aplicación. Se activou a aceleración da rede, poderá desactivala ata que estea listo para outra proba.

  7. Engada un segundo control de Botón e axuste a súa propiedade OnSelect nesta fórmula:

    Concurrent(
        ClearCollect( Product, '[SalesLT].[Product]' ),
        ClearCollect( Customer, '[SalesLT].[Customer]' ),
        ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
        ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    )
    

    Teña en conta que engadiches as mesmas chamadas de ClearCollect ao primeiro botón, pero esta vez están envoltas nunha Concurrent función e separadas por comas.

  8. Borre o monitor de rede no navegador.

  9. Se estaba usando a aceleración da rede antes, volva activala.

  10. Mentres manteña a tecla Alt premida, seleccione o segundo botón e vexa o tráfico da rede.

    As ferramentas amosan catro solicitudes realizadas á vez, semellantes a este exemplo. De novo, os tempos reais foron eliminados xa que varían moito. O gráfico mostra que todas as chamadas comezan aproximadamente á mesma hora e non esperan a que remate a anterior:

    Gráfico de hora de catro solicitudes de rede, as catro comezando xuntas, cubrindo aproximadamente a metade do período de tempo.

    Estes gráficos baséanse na mesma escala. Ao usar Concurrent, reduciu á metade o tempo total que tardaron estas operacións en rematar.

  11. Garde, peche e abra de novo a aplicación.

Condición carreira

  1. Engada unha conexión ao servizo de Microsoft Translator á súa aplicación.

  2. Engada un control de Entrada de texto e cámbielle o nome a TextInput1 se ten un nome diferente.

  3. Engada un control de Botón e axuste a súa propiedade OnSelect nesta fórmula:

    Set( StartTime, Value( Now() ) );
    Concurrent(
        Set( FRTrans, MicrosoftTranslator.Translate( TextInput1.Text, "fr" ) );
            Set( FRTransTime, Value( Now() ) ),
        Set( DETrans, MicrosoftTranslator.Translate( TextInput1.Text, "de" ) );
            Set( DETransTime, Value( Now() ) )
    );
    Collect( Results,
        {
            Input: TextInput1.Text,
            French: FRTrans, FrenchTime: FRTransTime - StartTime,
            German: DETrans, GermanTime: DETransTime - StartTime,
            FrenchFaster: FRTransTime < DETransTime
        }
    )
    
  4. Engada un control de Táboa de datos e estableza a súa propiedade Items en Resultados.

  5. No separador Propiedades do panel dereito, seleccione Editar campos para abrir o panel Campos.

  6. Na lista de campos, seleccione a caixa de verificación de cada campo para mostralos na táboa de datos.

  7. (opcional) Arrastre o campo Entrada á parte superior da lista e arrastre o campo FrenchFaster ao final da lista.

    Lista de campos da colección Resultado.

  8. No control Entrada de texto, escriba ou pegue unha frase para traducir.

  9. Mentres mantén premida a tecla Alt, seleccione o botón varias veces para encher a táboa.

    Os tempos móstranse en milisegundos.

    Mostra da táboa de datos que contén resultados de traducir a cadea

    Nalgúns casos, a tradución ao francés é máis rápida que a tradución ao alemán e viceversa. Ambos comezan ao mesmo tempo, pero un volve antes que o outro por varias razóns, incluíndo a latencia da rede e o procesamento do lado do servidor.

    Produciríase un estado de carreira se a aplicación dependese da finalización dunha tradución primeiro. Afortunadamente, Power Apps marca a maioría das dependencias de tempo que pode detectar.