Meteor 在嵌套函数中停止返回函数是否仍然停止?
此外,以下函数返回具有 如果从反应式计算调用stop方法,则在 重新运行或停止计算: Tracker.autorun(嵌套)Meteor.subscribe observe()和 游标上的observeChanges() 这意味着观察在此停止:Meteor 在嵌套函数中停止返回函数是否仍然停止?,meteor,meteor-tracker,Meteor,Meteor Tracker,此外,以下函数返回具有 如果从反应式计算调用stop方法,则在 重新运行或停止计算: Tracker.autorun(嵌套)Meteor.subscribe observe()和 游标上的observeChanges() 这意味着观察在此停止: Tracker.autorun -> cursor.observe() 但是这里呢 Tracker.autorun -> Tracker.nonReactive -> cursor.observe() 当在反应式计算
Tracker.autorun ->
cursor.observe()
但是这里呢
Tracker.autorun ->
Tracker.nonReactive ->
cursor.observe()
当在反应式计算中创建
MiniMongo
反应式句柄(find()
,observe()
,等等)时,MiniMongo
将检测到它,并将侦听器附加到计算的onInvalidate
,当计算无效(或停止)时,该句柄将停止
这是否直接在autorun
回调中完成并不重要
或者在从回调调用的函数中,只要是同步执行的(即,在相同计算的上下文中)
有一个显著的例外:非反应性回调
Tracker.nonreactive
回调在非反应上下文中触发,因此将设置为null
,Tracker.active
设置为false
。在这些条件下,MiniMongo
和变更观察员不会自动停止
但是,您可以手动停止它:
const MyCollection=new Mongo.Collection(null);
const cursor1=MyCollection.find({foo:'bar'});
const cursor2=MyCollection.find({foo:'baz'});
让observeCallback={
已添加(文档){
console.log('added',doc);
}
};
让handle=Tracker.autorun(函数(c){//c是计算对象
游标1.观察(observeCallback);//将自动停止
Tracker.nonreactive(函数(){
让观察者=光标2.观察(observeCallback);
c、 onStop(函数(){
observer.stop();//显式停止观察者
})
});
});
插入({foo:'bar'});
插入({foo:'baz'});
handle.stop();
当在反应式计算中创建一个MiniMongo
反应句柄(find()
,observe()
等)时,MiniMongo
将检测到它,并将侦听器附加到计算的onInvalidate
,该句柄将在计算无效(或停止)时停止
这是否直接在autorun
回调中完成并不重要
或者在从回调调用的函数中,只要是同步执行的(即,在相同计算的上下文中)
有一个显著的例外:非反应性回调
Tracker.nonreactive
回调在非反应上下文中触发,因此将设置为null
,Tracker.active
设置为false
。在这些条件下,MiniMongo
和变更观察员不会自动停止
但是,您可以手动停止它:
const MyCollection=new Mongo.Collection(null);
const cursor1=MyCollection.find({foo:'bar'});
const cursor2=MyCollection.find({foo:'baz'});
让observeCallback={
已添加(文档){
console.log('added',doc);
}
};
让handle=Tracker.autorun(函数(c){//c是计算对象
游标1.观察(observeCallback);//将自动停止
Tracker.nonreactive(函数(){
让观察者=光标2.观察(observeCallback);
c、 onStop(函数(){
observer.stop();//显式停止观察者
})
});
});
插入({foo:'bar'});
插入({foo:'baz'});
handle.stop();
它不仅仅是一个嵌套函数,它是一个非反应的
上下文,因此其中的观察不会自动停止。它不仅仅是一个嵌套函数,它是一个非反应的
上下文,因此它中的观察不会自动停止。