首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rxdart BehaviorSubject事务

rxdart BehaviorSubject事务
EN

Stack Overflow用户
提问于 2019-03-14 11:43:57
回答 1查看 88关注 0票数 0

在firebase中,我们可以像这样做事务

代码语言:javascript
复制
final dataRef = database.reference().child('path/to/data');

dataRef.runTransaction((MutableData transaction) async{
    transaction.value = (transaction.value ?? 0) + 1;
    return transaction;
});

我想知道我们在BehaviorSubject上也可以有同样的功能;就像这样

代码语言:javascript
复制
final subject = new BehaviorSubject<int>();

subject.add(1);
subject.add(2);
subject.add(3);
subject.runTransaction((int currentData) => currentData + 2);
// or 
subject.add(subject.value + 2);

subject.stream.listen(print); // prints 7
subject.stream.listen(print); // prints 7
EN

回答 1

Stack Overflow用户

发布于 2019-03-14 12:05:53

我只是看了一下,看起来我们目前可以做到这一点。

  1. 首先,“一旦Dart函数开始执行,它就会继续执行,直到退出。换句话说,Dart函数不能被其他Dart代码中断。“,ref (除了await关键字之外,它是一个很大的关键字,即使在技术上使用await已经是中断并在Future)
  2. Secondly,中返回代码查看RxDart source codeaddsetter都是同步的(没有Future,没有await),所以下面的代码是简单的,并保证作为一个Dart工作

代码语言:javascript
复制
subject.add(subject.value + 2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55154648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档