duocmmo / edu-comments

Quản lý các bình luận trên edu.duthanhduoc.com
https://edu.duthanhduoc.com/
0 stars 1 forks source link

https://edu.duthanhduoc.com/learn/Next.Js-Super?lessonId=524 #58

Open utterances-bot opened 4 days ago

utterances-bot commented 4 days ago

Khu vực học tập | Được Edu

Được chỉ cung cấp các khóa học lập trình online chất lượng, nói không với khóa lởm!

https://edu.duthanhduoc.com/learn/Next.Js-Super?lessonId=524

mycvlnn commented 4 days ago

Anh ơi. Cái này nếu mà cứ ngồi reload liên tục thì nó vẫn có thể lỗi anh ạ. Anh có thể thử nhé. Mới cả có một chỗ em thấy a đang sai chỗ truyền hàm onError để clearInterval

  useEffect(() => {
        if (UNAUTHENTICATED_PATH.includes(pathname)) return;

        console.log("RUNNING IN COMPONENT REFRESH TOKEN");

        let interval: any = null;

        // Phải gọi lần đầu tiên, vì interval sẽ chạy sau thời gian TIMEOUT
        checkAndRefreshToken();
        // Timeout interval phải bé hơn thời gian hết hạn của access token
        // Ví dụ thời gian hết hạn của access token và 10s thì 1s mình sẽ cho check 1 lần
        const TIMEOUT = 1000;
        interval = setInterval(
            () =>
                checkAndRefreshToken({
                    onError: () => clearInterval(interval),
                }),
            TIMEOUT
        );

        return () => {
            console.log("Clean up interval");
            clearInterval(interval);
        };
    }, [pathname]);
duthanhduoc commented 4 days ago

Anh ơi. Cái này nếu mà cứ ngồi reload liên tục thì nó vẫn có thể lỗi anh ạ. Anh có thể thử nhé. Mới cả có một chỗ em thấy a đang sai chỗ truyền hàm onError để clearInterval

  useEffect(() => {
        if (UNAUTHENTICATED_PATH.includes(pathname)) return;

        console.log("RUNNING IN COMPONENT REFRESH TOKEN");

        let interval: any = null;

        // Phải gọi lần đầu tiên, vì interval sẽ chạy sau thời gian TIMEOUT
        checkAndRefreshToken();
        // Timeout interval phải bé hơn thời gian hết hạn của access token
        // Ví dụ thời gian hết hạn của access token và 10s thì 1s mình sẽ cho check 1 lần
        const TIMEOUT = 1000;
        interval = setInterval(
            () =>
                checkAndRefreshToken({
                    onError: () => clearInterval(interval),
                }),
            TIMEOUT
        );

        return () => {
            console.log("Clean up interval");
            clearInterval(interval);
        };
    }, [pathname]);

Tại sao truyền ntn lại sai em

onError: () => {
  clearInterval(interval)
}
mycvlnn commented 2 days ago
  // Phải gọi lần đầu tiên, vì interval sẽ chạy sau thời gian TIMEOUT
        checkAndRefreshToken();

Ở đoạn code này trong video em thấy a truyền vào hàm onError để xử lý clearInterval á. Vì bản chất lúc đó nó cũng chưa có intervalId nên việc truyền vào nó cũng không có tác dụng. Ở bài sau em thấy anh sửa đúng rồi nhé