Предполагается, что мне нужно вернуть обещание из моего метода, который зависит от внешнего ресурса и некоторых вычислений. Я представляю что-то вроде:Комплексные обещания в игре
Promise<Integer> foo() {
return WS.url(url)
.getAsync()
.callWhenReady(new Function<HttpResponse>(){
Integer parse(HttpResponse response) {
// parsing business logic
// ...
int parsed = ...;
return parsed;
}
});
}
Что я могу использовать для callWhenReady
? Это по существу так же, как и jQuery.promise()
.
Я хотел бы составить обещание WS с другим расчетом и вернуть композицию в новое будущее. См. Https://github.com/ripper234/BTCtoX/blob/d8af7fa07bfe7a0a33ce7e3899fde7ba4193ec2c/app/controllers/Application.java - 'tobtc()' вызывает два веб-API. Недостатком является то, что каждый API не является полностью асинхронным и отбрасывает один рабочий поток, ожидая вызова HTTP HTTP. – ripper234
Что-то должно слушать эти HTTP-вызовы WS, а в java это операция блокировки. Я не думаю, что у игры есть какой-то другой механизм для решения этой проблемы, другой, как это делается в отдельных потоках. Как я вижу, это может быть проблемой, если вы одновременно начинаете серьезное количество заданий. – aaberg
У игры есть WS.url (url) .getAsync, и я хотел бы использовать продолжение для выполнения моего кода. Играть уже делает это по дизайну, чтобы сохранить рабочие потоки. – ripper234