hyperstack-org / hyperstack-org/hyperstack

every and each unmounting...

Đang mở
#395 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
discussion enhancement
Ngôn ngữ chính
JavaScript
Star
538
Fork
41
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

`every` makes sense, as the timer will keep running for ever. But should any `each` timer that is still running when things unmount also be unmounted? Note that Observable includes AutoUnmount, so any store will get this behavior as well!

Then, on the other hand, there is an each! and every! method (they don't auto start, so you have to say each!(x).start. Neither of these timers IS auto-unmounted.

Couple of options:

1. just take after out of unmount, and forgettabout it.
2. 1 + provide a remove_after_timers method callable in Observable
3. leave it, and if you want a timer that isn't unmounted use the bang variation.
4. provide auto_unmount(x) attached to the timers so you say: `after(12).auto_unmount(true)` or `every(12).auto_unmount(false)` to override the defaults.

Currently I think its best to make both every and every! behave the same, and make each and each! not autounmount, and then add the `auto_unmount` method to the Browser::Interval and Browser::Delay classes.

```ruby
attr_accessor :mount_point

def auto_unmount(yes)
# warning message and return if mount_point is nil
if yes
AutoUnmount.objects_to_unmount[mount_point] << self
else
AutoUnmount.objects_to_unmount[mount_point].delete(self)
end
end

alias unmount abort
```

now all the automounter does is set mount_point

```ruby
def every!(*args, &block)
super.tap do |id|
next id if unmounted?
id.mount_point = self
id.auto_unmount(true)
end
end
def after!(*args, &block)
super.tap { |id| id.mount_point = self unless unmounted? }
end
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.