Ininformatica, con i terminifuture,promise edelay ci si riferisce a particolari costrutti usati nellasincronizzazione dell'esecuzione dei programmi scritti con alcunilinguaggi di programmazione di tipoconcorrente. Questo costrutto fa uso di una sorta di segnaposto, un oggetto che prende il posto di un valore che è in attesa di essere restituito da un'operazione asincrona. Su questo oggetto vengono definite delle operazioni da effettuare quando l'operazione asincrona sarà stata completata.
Il concetto dipromise fu proposto nel 1976 daDaniel P. Friedman e David Wise,[1]e da Peter Hibbard che lo chiamòeventual.[2]Il concetto abbastanza simile difuture fu introdotto nel 1977 in una pubblicazione diHenry Baker eCarl Hewitt.[3] Sebbene i due termini vengano spesso usati interscambiabilmente, esistono alcune differenze.[4]
Questo tipo di costrutto è implementabile in diversi linguaggi, comeJavaScript,[5]Java,[6]Scala,[4]C# (a partire da .NET 4.5, con le parole chiaveasync eawait),[7]Python (da 3.2 con la libreriaconcurrent.futures[8] e da 3.5 conasync eawait[9]) e molti altri.