Add `contextObject` to function `subscribe`
Opened this issue · 1 comments
luozikuan commented
Considering this situation: Display a dialog, and then use AsyncFuture
to send a network request, and the result will be displayed on the interface when the network request responds. I used the following logic (pseudo code):
Dialog::request()
{
auto future = ... ; // request data from network
observe(future).subscribe([=](QString data){ // onComplete
ui->label->setText(data);
},
[=](){ // onCanceled
ui->errorLabel->setText("error");
});
}
But before the network reply, the user may close the dialog. In this case, the ui->label
in onComplete has been destroyed, causing a crash.
Is there any plan to add contextObject
to function subscribe
? So I can modify code like this
Dialog::request()
{
auto future = ... ; // request data from network
- observe(future).subscribe([=](QString data){ // onComplete
+ observe(future).subscribe(this, [=](QString data){ // onComplete
ui->label->setText(data);
},
[=](){ // onCanceled
ui->errorLabel->setText("error");
});
}
vpicaver commented