New async memo reveals a held signal update early
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript, typescript
- Lĩnh vực
- frontend
Hướng nghiên cứu
Start by reading the async memo and scheduled render-effect behavior in the repository, then compare the issue’s reproduction with the earlier report #3408. The linked playground reproduces the early reveal; no source file or test is named, so locate or add focused coverage for synchronous versus asynchronous first results and the explicit flush. Done when the new observer remains held until the slow derivation settles.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
A newly created async memo reads an update that is still held by an existing async derivation, then notifies a scheduled render effect before that update is revealed. The existing scheduled render effect still last reported count = 1, slow = 1, while the new one reports 2.
The same newly created memo stays held when its first result is synchronous. Returning Promise.resolve(count()) instead makes it reveal early.
Your Example Website or App
https://s.olid.uk/id/22KYZfNOSnqqlHlUzL1MqQ
Steps to Reproduce the Bug or Issue
- Open the playground console and press Build (or reload).
- After about one second, observe
parent 1 1. - About 100ms later, observe
child 2while the parent is still held at1 1. - Roughly one second after that, the slow derivation settles and the parent finally reports
parent 2 2.
Expected behavior
The new scheduled render observer should stay held until the input update can be revealed with its slow derivation. An asynchronous first result should preserve the inherited hold, just as a synchronous first result does.
Screenshots or Videos
No response
Platform
- OS: Linux
- Browser: Chromium 151.0.7922.173
- Solid: 2.0.0-rc.13 in the playground; also reproduced on upstream
nextat b0bad02, in development and production.
Additional context
Both render effects use { schedule: true }, so this excludes the immediate mounting-effect path. The repro uses only primitives.
Two controls preserve the hold:
- Replace
Promise.resolve(count())withcount(). - Remove the explicit
flush()before creating the new memo.
The development warnings about unowned effects are expected in this minimal repro.
Related earlier report: #3408. Here the synchronous first result behaves correctly; the asynchronous first result does not.
- Ngôn ngữ chính
- TypeScript
- Star
- 36.2k
- Fork
- 1.1k
- Merge trung bình
- 11 giờ
- Pull request đã merge (30 ngày)
- 343
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của solidjs/solid
-
`lazy()`: remounting an already-loaded component renders empty (or the Suspense fallback) since 1.9.14Có thể đã có người làm @itisrmk đã nhận 8 ngày trước. Đang mở1.x
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 56/100
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
-
`createRoot`'s dispose function keeps `fn` alive, so `<For>`/`<Index>` rows retain removed list itemsCó thể đã có người làm @boombang đã nhận 10 ngày trước. Đang mở1.x
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 45/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Keep element state when the runtime moves a node (`moveBefore()` and not detaching what is re-inserted)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của solidjs/solid
Issue tương tự
-
[Bug]: Device screenshot fails with 500 on iPhone Duo (Xcode 27.2): serve-sim calls simctl without --displayCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
pingdotgg/t3code#24900 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
inu-appcenter/UNIDorm-web#411 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
🐛 bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
ranxianglei/billion-context#4720 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:arcade game p3-medium ready-for-agent type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
fderuiter/deruiter.dev#2840 ·
Maintainer thường phản hồi trong vòng 1 ngày