# 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 (opens new window).

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!
    });