Недавно я видел концепцию Promises, реализованную в AngularJS и JQuery.
Я видел реализацию фьючерсов в Java, как в коде ниже, однако для этого требуется понятие пулов потоков, присутствующих в языке/платформе. Однако в Javascript нет такой концепции потоковой передачи. Как реализовано Promises в Javascript?
public class Futures1 {
private static final ExecutorService pool = Executors
.newFixedThreadPool(10);
public static void main(String[] args) {
Future<String> contentsFuture = null;
try {
contentsFuture = startDownloading(new URL("http://www.example.com"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
// other computation
try {
final String contents = contentsFuture.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
public static Future<String> startDownloading(final URL url) {
return pool.submit(new Callable<String>() {
@Override
public String call() throws Exception {
try (InputStream input = url.openStream()) {
return IOUtils.toString(input, StandardCharsets.UTF_8);
}
}
});
}
}