Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

2.0.0-rc.14: until() through a synchronous memo misses optimistic confirmation

Đang mở
#3,943 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
35/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
frontend

Hướng nghiên cứu

Start by reproducing with the playground component in the issue, then swap the predicate between doubled() and count() to confirm the memo is the difference. The payload names no source files, so you will need to find where until() subscribes and how a synchronous createMemo propagates optimistic values on confirmation. Done when yield until(() => doubled() === 2) completes after setSource(1), matching the direct-read control.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Describe the bug

On 2.0.0-rc.14, an action waiting with until() through a synchronous memo remains pending when the actual source confirms its optimistic prediction. Reading the optimistic accessor directly in the predicate completes the same action.

The predicate subscribes before confirmation arrives. The prediction alone correctly does not satisfy the wait, but confirming it does not resolve the wait through the memo either.

Your Example Website or App

https://s.olid.uk/?id=d1d1a3ee-70c8-4afe-966d-258809cb4f06

The playground uses published 2.0.0-rc.14. Here is the full component, including the actual source update in the Confirm button:

import { action, createMemo, createOptimistic, createSignal, until } from "solid-js";
import { render } from "solid-js/web";

function App() {
  const [source, setSource] = createSignal(0);
  const [count, guess] = createOptimistic(() => source());
  const doubled = createMemo(() => count() * 2);
  const [completed, setCompleted] = createSignal(false);

  const save = action(function* () {
    guess(1);
    yield Promise.resolve();
    // Direct-read control: yield until(() => count() === 1);
    yield until(() => doubled() === 2);
  });

  return (
    <main>
      <button onClick={() => save().then(() => setCompleted(true))}>1. Start</button>
      <button onClick={() => setSource(1)}>2. Confirm</button>
      <p>Displayed count: {count()}</p>
      <p>Doubled memo: {doubled()}</p>
      <p>Action completed: {String(completed())}</p>
    </main>
  );
}

render(() => <App />, document.getElementById("app")!);
Steps to Reproduce the Bug or Issue
  1. Open the playground and click 1. Start.
  2. The displayed count becomes 1 and the doubled memo becomes 2. Action completion remains false, as expected while the prediction is unconfirmed.
  3. Click 2. Confirm to set the actual source to 1.
  4. Action completion still remains false.
  5. Change the wait to yield until(() => count() === 1), rebuild, and repeat. Action completion becomes true after confirmation.

Both the failing memo case and the successful direct-read control were verified in the browser.

Expected behavior

The optimistic prediction alone should not satisfy until(). Once the actual source confirms the prediction, the predicate through the synchronous memo should resolve and the action should complete, just as the direct-read predicate does.

Platform
  • OS: Linux (WSL)
  • Browser: Chrome for Testing 153.0.8010.12, tested with Playwright
  • Solid: 2.0.0-rc.14
Ngôn ngữ chính
TypeScript
Star
36.1k
Fork
1.1k
Merge trung bình
11 giờ 25 phút
Pull request đã merge (30 ngày)
345

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của solidjs/solid

Tất cả issue của solidjs/solid

Issue tương tự

Thêm issue về TypeScript

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.