#pragma once #include namespace LtsUtils { class PromiseExample1_Class : public QObject { Q_OBJECT public: using QObject::QObject; void doSomethingAsync1(); void doSomethingAsync2(); signals: void signalDone1(bool didThisWork); void signalDone2(bool didThisWork, int someNumberThatReturns); }; class PromiseExample1 : public QObject { Q_OBJECT public: explicit PromiseExample1(QObject *parent = nullptr); bool isSuccess() const { return m_success; } private: bool m_success; }; class PromiseExample2 : public QObject { Q_OBJECT public: explicit PromiseExample2(QObject *parent = nullptr); bool isSuccess() const { return m_success; } private: bool m_success; }; class PromiseExample3 : public QObject { Q_OBJECT public: explicit PromiseExample3(QObject *parent = nullptr); bool isSuccess() const { return m_success; } private: bool m_success; bool m_alreadyRejected; }; }