Dmitriy Purgin 1ad99391a3
std::chrono overloads for .timeout() and .delay() (#30)
Add convenience overloads accepting durations from the C++ Standard Library.
2020-02-11 22:07:05 +01:00

1.5 KiB

title
.timeout

QPromise::timeout

Since: 0.2.0

QPromise<T>::timeout(int msec, any error = QPromiseTimeoutException) -> QPromise<T>

This method returns a promise that will be resolved with the input promise's fulfillment value or rejection reason. However, if the input promise is not fulfilled or rejected within msec milliseconds, the output promise is rejected with error as the reason (QPromiseTimeoutException by default).

QPromise<int> input = {...}
auto output = input.timeout(2000)
    .then([](int res) {
        // operation succeeded within 2 seconds
    })
    .fail([](const QPromiseTimeoutException& error) {
        // operation timed out!
    });

Since: 0.6.0

QPromise<T>::timeout(std::chrono::milliseconds msec, any error = QPromiseTimeoutException) -> QPromise<T>

This is a convenience overload accepting durations from the C++ Standard Library.

QPromise<int> input = {...}
auto output = input.timeout(std::chrono::seconds{2})
    .then([](int res) {
        // operation succeeded within 2 seconds
    })
    .fail([](const QPromiseTimeoutException& error) {
        // operation timed out!
    });

C++14 alternative:

using namespace std::chrono_literals; 

QPromise<int> input = {...}
auto output = input.timeout(2s)
    .then([](int res) {
        // operation succeeded within 2 seconds
    })
    .fail([](const QPromiseTimeoutException& error) {
        // operation timed out!
    });