我看到Qt有直接模拟boost::future的future类,但是boost::promise的qt是什么呢
发布于 2014-03-06 01:59:08
按照公认的答案构建我自己的QFuture对我来说不起作用。起初,它看起来像是在工作,但在我的测试中,我意识到它并没有阻止调用者。哇哦!因此,我进一步研究了代码,发现QFutureInterface是您想要用作“promise”的东西。与boost::promise一样,QFutureInterface是您在工作线程中与之交互的对象,它是QFutures的工厂。
下面是我在Qt4.8中所做的(不确定这是否适用于以后的版本)。
QFutureInterface<QVariant> promise;
promise.reportStarted();
...
promise.reportResult(someVariant);
promise.reportFinished();
然后在客户机线程中,假设您可以访问QFutureInterface 'promise‘
QVariant result = promise.future().result();
future()
调用是一个工厂方法,用于创建绑定到QFutureInterface的QFuture。如果需要,您应该能够获取QFuture并稍后在其上调用result()
。
发布于 2018-09-26 16:08:12
Qt的承诺现在也可以通过QML/JavaScript btw:https://v-play.net/updates/release-2-18-1-javascript-promises-for-rest-services-tinder-swipe-material-cards-qml-qsortfilterproxymodel-qml-youtube-player获得
下面是一些示例代码:
import VPlayApps 1.0
import QtQuick 2.0
App {
Component.onCompleted: {
var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = HttpRequest
.get("http://httpbin.org/get")
.then(function(resp) {
return resp.body;
});
var p4 = Promise.all([p1, p2, p3]);
p4.then(function(values) {
console.log(values[0]); // 3
console.log(values[1]); // 1337
console.log(values[2]); // resp.body
});
}
}
https://stackoverflow.com/questions/10874311
复制相似问题