From de00fa24da6f5af70a8a8f95ab6d4f996ffeb6bb Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 28 Apr 2015 09:46:28 +0200 Subject: Async::wait Useful in i.e. loops that have to wait a bit before every execution. --- async/src/async.cpp | 13 +++++++++++++ async/src/async.h | 5 +++++ 2 files changed, 18 insertions(+) (limited to 'async/src') diff --git a/async/src/async.cpp b/async/src/async.cpp index e92d333..0e86a84 100644 --- a/async/src/async.cpp +++ b/async/src/async.cpp @@ -20,6 +20,7 @@ #include #include #include +#include using namespace Async; @@ -133,3 +134,15 @@ Job Async::dowhile(ThenTask body) }); } +Job Async::wait(int delay) +{ + auto timer = QSharedPointer::create(); + return Async::start([timer, delay](Async::Future &future) { + timer->setSingleShot(true); + QObject::connect(timer.data(), &QTimer::timeout, [&future]() { + future.setFinished(); + }); + timer->start(delay); + }); +} + diff --git a/async/src/async.h b/async/src/async.h index 18b5979..b1f1121 100644 --- a/async/src/async.h +++ b/async/src/async.h @@ -284,6 +284,11 @@ Job dowhile(ThenTask body); template Job iterate(const Out &container); +/** + * Async delay. + */ +Job wait(int delay); + /** * A null job. * -- cgit v1.2.3