6 /// private, don't use directly
7 class BasePromise : public QObject {
11 explicit BasePromise(QObject *parent = nullptr) : QObject(parent) {
12 connect(this, &BasePromise::resolve, this, &QObject::deleteLater);
13 connect(this, &BasePromise::reject, this, &QObject::deleteLater);
16 template <typename Function> BasePromise &then(Function func) {
17 connect(this, &BasePromise::resolve, this, func);
20 template <typename Function> BasePromise &onFailed(Function func) {
21 connect(this, &BasePromise::reject, this, func);
24 template <typename Function> BasePromise &finally(Function func) {
25 connect(this, &BasePromise::destroyed, this, func);
31 void reject(const QString &message);
34 template <class T> class Promise : public BasePromise {
36 void resolve(T value) {
40 T result() const { return data; }