

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Uso di async e await
<a name="async-await-syntax"></a>

CloudFront Le funzioni JavaScript di runtime di Functions 2.0 forniscono una `async` `await` sintassi per gestire `Promise` gli oggetti. Le promesse rappresentano risultati con ritardo a cui è possibile accedere tramite la parola chiave `await` nelle funzioni contrassegnate come `async`. Diverse nuove WebCrypto funzioni utilizzano Promises.

Per ulteriori informazioni sugli oggetti `Promise`, consulta [Promessa](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).

**Nota**  
È necessario utilizzare JavaScript runtime 2.0 per i seguenti esempi di codice.  
`await` può essere utilizzato solo all’interno delle funzioni `async`. Argomenti e chiusure `async` non sono supportati.

```
async function answer() {
    return 42;
}

// Note: async, await can be used only inside an async function. async arguments and closures are not supported.

async function handler(event) {
    // var answer_value = answer(); // returns Promise, not a 42 value
    let answer_value = await answer(); // resolves Promise, 42
    console.log("Answer"+answer_value);
    event.request.headers['answer'] = { value : ""+answer_value };
    return event.request;
}
```

Il JavaScript codice di esempio seguente mostra come visualizzare le promesse con il metodo `then` chain. È possibile utilizzare `catch` per visualizzare gli errori.

**avvertimento**  
L’uso dei combinatori di promesse (ad esempio, `Promise.all`, `Promise.any`) e dei metodi di catena di promesse (ad esempio, `then` e `catch`) può richiedere un elevato utilizzo della memoria delle funzioni. Se la funzione supera la quota [massima di memoria delle funzioni](cloudfront-limits.md#limits-functions), non verrà eseguita. Per evitare questo errore, ti consigliamo di utilizzare la sintassi `await` anziché i metodi `promise`.

```
async function answer() {
    return 42;
}

async function squared_answer() {
   return answer().then(value => value * value)
} 
// Note: async, await can be used only inside an async function. async arguments and closures are not supported.
async function handler(event) {
    // var answer_value = answer(); // returns Promise, not a 42 value
    let answer_value = await squared_answer(); // resolves Promise, 42
    console.log("Answer"+answer_value);
    event.request.headers['answer'] = { value : ""+answer_value };
    return event.request;
}
```