Developer Stephen Bell from Embarcadero has a blog post up which explains how the new TTask IFuture functionality works in Delphi XE7 Firemonkey. Futures have been made available in the parallel programming library and work on Android, IOS, Windows, and Mac OSX. A future is sort of an asynchronous function that returns a result sometime later but if asked for it will return it now. So you can setup your TTask.Future to return a string or an integer for example and then continue running other code. When you go to access that string or integer variable later it will check to see if the TTask.Future has already completed (returned the data and populated the variable). If it has not returned the data or completed yet then it will synchronously wait for that asynchronous function to complete before moving on. Here is some sample code from the blog post demonstrating a Future:
var
OneValue: IFuture <Integer>;
begin
OneValue := TTask.Future<Integer>(function: Integer
begin
Result := ComputeSomething;
Sleep(1000); // delay to show status
end);
Head over and check out the full blog post and code snippets for using Futures in Delphi XE7 Firemonkey on Android, IOS, OSX, and Windows.